接口与抽象类

接口与抽象类

接口

接口可以看成是一种特殊的类,只能用interface关键字修饰。接口是提供给别人调用的。Java中的接口具有以下几个特点:

1、接口中可以包含变量和方法,变量被隐式指定为public static final,方法被隐式指定为public abstract(JDK 1.8之前);

2、接口支持多继承,即一个接口可以继承(extends)多个接口,间接解决了Java中类不能多继承的问题;

3、一个类可以同时实现(implements)多个接口,一个类实现某个接口则必须实现该接口中的所有抽象方法,否则该类必须被定义为抽象类;

4、JDK 1.8中对接口新增了两个特性:

(1)默认方法(default method):JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰;定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法。

(2)静态方法(static method):JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。


抽象类

在Java中,被关键字abstract修饰的类称为抽象类;被abstract修饰的方法称为抽象方法,抽象方法只有方法声明没有方法体(即没有{})。

抽象类有以下几个特点:

1、抽象类不能被实例化(new),只能被继承。

2、包含抽象方法的类一定是抽象类,但抽象类不一定包含抽象方法(抽象类可以包含普通方法)。

3、抽象方法的权限修饰符只能为public或者protected,默认情况下为public。

4、一个类继承于一个抽象类,则子类必须实现抽象类的所有抽象方法,如果子类没有实现父类的抽象方法,那子类必须定义为抽象类。

5、抽象类可以包含属性、方法、构造方法,但构造方法不能用来实例化对象,只能被子类调用


接口与抽象类的相同点

都不能被实例化。


接口与抽象类的区别

类型abstract classinterface
定义abstract class关键字interface关键字
继承抽象类可以继承一个类和实现多个接口;子类只可以继承一个抽象类接口只可以继承接口(一个或多个);子类可以实现多个接口
访问修饰符抽象方法:publicprotecteddefault接口方法默认修饰符是public,不能使用其它修饰符
方法实现可定义构造方法,可以有抽象方法和普通方法接口完全是抽象的,没有构造方法,且方法都是抽象的,不存在方法的实现
实现方式子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现子类使用关键字implements来实现接口,它需要提供接口中所有声明的方法的实现
作用为了把相同的东西提取出来,即重用为了把程序模块进行固化的契约,是为了降低耦合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值