interface Area{
public abstract void CalculateArea();
}
class MyCircle implements Area{
private int r;
private double p=3.14;
public MyCircle() {
}
public MyCircle(int r) {
this.r = r;
}
public int getR() {
return r;
}
public void setR(int r) {
this.r = r;
}
@Override
public void CalculateArea() {
System.out.println("圆的面积是"+r*r*p);
}
}
class MyRectangle implements Area{
private int chang;
private int kuan;
public MyRectangle() {
}
public MyRectangle(int chang, int kuan) {
this.chang = chang;
this.kuan = kuan;
}
public int getChang() {
return chang;
}
public void setChang(int chang) {
this.chang = chang;
}
public int getKuan() {
return kuan;
}
public void setKuan(int kuan) {
this.kuan = kuan;
}
@Override
public void CalculateArea() {
System.out.println("矩形的面积是"+chang*kuan);
}
}
class Ji{
public static void main(String[] args){
Area m=new MyCircle(5);
// MyCircle m=new MyCircle(5);//为啥这个也可以实现接口的方法 他和接口有啥区别
m.CalculateArea();
Area m2=new MyRectangle(3,4);
// MyRectangle m2=new MyRectangle(3,4);
m2.CalculateArea();
}
}
因为他本身就是Area 接口的实现类 而接口不能被实例化只能new他的实现类 而MyCircle作为他的实现类创建出来使用他的方法有他的功能很正常
接口中声明了方法,但是它只能被继承不能通过new实例化;
而 MyCircle类继承了接口, 并且重写了接口中的CalculateArea()方法,它是可以通过new来实例化的
接口时规范,类可以实例化的,而且要实现接口声明的方法