java——抽象类与接口的区别

1、抽象类和接口都有抽象方法,但接口只能有抽象方法,抽象类还可以有普通方法。

2、抽象类虽然不能实例化,但可以有构造方法。接口不能有构造方法
抽象类虽有别与普通类,但还是类。
接口是引用型变量,存放数据是将对象的地址赋给它。
例如:

//接口I
//类A
I i;//声明一个接口
A a=new A();//创建一个对象
i=a;//然后就可以用i来调用方法

3、抽象类不可以加final、子类重写后的方法不可以加static。接口的方法默认为public abstract。
(1)抽象类如果定义为final类就无法继承,不能继承就无法在子类中给出抽象方法的方法体。
(2)当实现多态时,父类被重写的方法的方法体在父类中就是多余的了,所以有了抽象类。如果子类重写的方法加了static,不符合重写的规则。
(3)抽象类和接口都是在实现多态

4、抽象类只能是单继承,一个接口可以继承多个其他接口,一个类也可以实现多个接口。
在Java中就是用接口来弥补类不能多继承的缺口。

5、接口的变量默认为public static final,也就是常量。但抽象类不仅可以有常量,还可以有变量

发布了29 篇原创文章 · 获赞 3 · 访问量 370

猜你喜欢

转载自blog.csdn.net/qq_44687512/article/details/105078960