java问题 接口和类对象的区别

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来实例化的

接口时规范,类可以实例化的,而且要实现接口声明的方法