public static void main(String[] args){
Shape[] s=new Shape[3]//new一个Shape数组
s[0]=new Rect(4,2)
s[1]=new Square(5)
s[2]=new Circle(10)
//Shape是个接口,里面方法都是抽象的不能直接用
//接口和继承差不多,你可以理解成Rect,Square,Circle是Shape的子类吧(严格意义上穗并誉不
//能这样说,只是方便理解)
for(int i=0i<s.lengthi++){
System.out.println("ZhouChang:"+s[i].zhouChang())
System.out.println("MianJi:"+s[i].mianJi())
}
}
}
interface Shape{//这是你定义的接口Shape(形状)
double zhouChang()//未实现的public abstract double方法
double mianJi()//同上
}
class Rect implements Shape{//使用这个接口,必须要实现上面两个方法
private double chang
private double kuan
public Rect(){}//这是你这个的构造函蔽纳数
public Rect(double chang,double kuan){
//构造函数2(参数不同),使用这个构造方法时将chang kuan两个函数参数赋值给
//类成员变量this.chang 和this.kuan
this.chang=chang
this.kuan=kuan
}
public double zhouChang(){//实现接口提供的猜段方法,算周长
return (chang+kuan)*2
}
public double mianJi(){//实现接口提供的方法算面积
return chang*kuan
}
}
class Square extends Rect{//这个Square类继承了Rect,是Rect的子类
//正方形是长方形的一种
//继承了父类就要实现父类必须要实现的抽象方法(算周长,算面积)
//还有父类有的构造函数都要实现(Square()和Square(double,double)
private double bianChang
public Square(){}
public Square(double bianChang){
super()
this.bianChang=bianChang
}
public double zhouChang(){
return bianChang*4
}
public double mianJi(){
return bianChang*bianChang
}
}
class Circle implements Shape{//这个圆使用了Shape接口
private double r
//这下面两个是构造函数
public Circle(){}
public Circle(double r){
this.r=r
}
//这两个方法zhouchang和mianji都是要实现的
public double zhouChang(){
return 2*3.1415926*r
}
public double mianJi(){
return 3.1415926*r*r
}
}
还有什么问题
正方形类本来就不该继承矩形类如果一定要继承,那就...继承吧巧碧...
class Rectangle { ... }
class Square extends Rectangle {
int size
Square(int s) { size = s}
}
你可以在Rectangle中定义一些方源宽世法,比如area()之类,然后雹肢在Square中覆盖。
#include<iostream>using namespace std
class rect
{
public:
rect(int width, int length) : width(width),length(length){}
int Area()
{
return length * width
}
int Perimeter()
{
return 2 * (length + width)
}
friend int add(rect &r1, rect &r2)
private:
int length
int width
}
int add(rect &r1,rect &r2)
{
return r1.Area() + r2.Area()
}
int main()
{
rect rect1(2,4), rect2(4,6)
cout<<"rect1的面积是"<<rect1.Area()<<endl
cout<<"rect1的周长是孙含迅老亏"<<rect1.Perimeter()<<endl
cout<<"rect2的面积是"<<rect2.Area()<<endl
cout<<"rect2的周长是"<<rect2.Perimeter()<<endl
cout<<"rect1 和rect2的面积之和为"<<add(rect1,rect2)<<endl
return 0
}
运则此行结果
rect1的面积是8
rect1的周长是12
rect2的面积是24
rect2的周长是20
rect1 和rect2的面积之和为32
Press any key to continue
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)