您的位置:首页 > 其它

interface 与abstract class(接口 与 抽象类)的特点以及区别,以及应用场景

2018-01-16 16:05 411 查看


Java 接口http://www.runoob.com/java/java-interfaces.html


Java 抽象类http://www.runoob.com/java/java-abstraction.html

一、抽象类(abstract)

1、抽象类不能被实例化,如果实例化就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

2、抽象类中不一定含有抽象方法,但是有抽象方法的类一定是抽象类。

3、抽象类中的抽象方法只能声明,不包含方法体,就是不会给出方法的具体实现。

4、构造方法、类方法(用static修饰的方法)不能声明为抽象方法。

5、抽象类的子类必须给出抽象类中抽象方法的具体实现,除非子类也是抽象类。

二、接口(interface)

1、接口可以多继承

2、接口中的方法必须是public abstract,即便不写默认也是。

3、接口里面不包含方法的具体实现,即接口中的所有方法都必须是抽象方法。

4、类继承接口必须实现接口里面声明的全部方法,除非该类是抽象类。

5、接口不可以被实例化,但可以被实现类创建。

三、抽象类与接口的相同点

1、两者都是抽象类,都不能被实例化。

2、接口的实现类及抽象类的子类都必须实现已经声明的抽象方法(当然啦,除非接口的实现类及抽象类的子类也是抽象的)

四、抽象类与接口的区别

1、抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

2、抽象类中的成员变量可以是各种类型的,但是接口中的只能是public static final类型的。

3、一个类只能继承一个抽象类,而但是可以实现多个接口。

4、接口需要实现,用implements;而抽象类需要继承,用extends。

5、接口中的方法必须都实现,而抽象类中的方法可以选择性的实现。

五、什么时候使用抽象类和接口

1、如果拥有一些方法并且想让它们中的一些默认实现,就用抽象类。

2、如果想实现多继承,就必须要用接口。由于Java中不支持多继承,子类不能够继承多个类,但可以实现多个接口。

3、如果基本功能不断改变,那么要使用抽象类。因为不断改变功能时,用接口的话,就需要改变所有实现了该接口的类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: