【学习笔记】Java抽象类和接口的一些总结

今天重温了一遍Java抽象类和接口的一些知识,在这里总结一下,如有不足望指出。


一、接口

1、在Java中,使用interface关键字来定义接口(注意:目前interface只支持public和abstract修饰符)。Java与C++不同,不支持多重继承,即一个类只能继承一个父类,但是可以实现多个接口。接口不能继承其它类,也不能实现其他接口,但是可以用extends关键字继承多个接口。

2、接口没有构造方法,因此,接口声明的对象不能被实例化,只能引用实现该接口的对象实例。

3、接口的成员变量默认修饰符都是public static final类型的,不能用其它修饰符修饰,同时必须被显示初始化。

4、接口里面的方法默认都是public abstract类型的。修饰符只能使用public,abstract,default,static和strictfp。(jdk 8开始支持接口定义静态方法)

5、一个类如果实现了一个接口,那么必须实现该接口中的所有抽象方法,否则该类必须声明为抽象类。


二、抽象类

1、不能直接使用抽象类生成对象,但可以通过new关键字生成对象并继承其所有抽象方法使用。

2、抽象类中可以声明一般的成员变量和方法。

3、抽象类的子类必须实现其父类的所有抽象方法,否则要将子类声明为抽象类。


三、接口和抽象类的区别

1、接口不能包含构造函数,抽象类可以声明构造函数,供其子类继承使用。

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

3、接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法。(jdk 8之前)。

4、从设计层面上来说,抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值