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

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、如果基本功能不断改变,那么要使用抽象类。因为不断改变功能时,用接口的话,就需要改变所有实现了该接口的类。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值