本文主要是介绍Java抽象类和接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
什么是抽象类
Java中被abstract关键字修饰的类被成为抽象类,被abstract修饰的方法被称为抽象方法,抽象方法只有方法的声明没有实现。
抽象类的特点
- 抽象类不能被实例化
- 包含抽象方法的类一定是抽象类,但抽象类不一定有抽象方法
- 抽象类中的抽象方法的修饰方法只能是public或者protected,默认为public
- 一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类
- 抽象类可以包含属性,方法,构造方法,但是构造方法不能实例化,主要用于被子类调用
什么是接口
Java中接口使用interface关键字修饰
接口的特点
- 接口可以包含变量,方法,变量被隐式指定为public static final,方法被隐式指定为public abstract(JDK1.8之前)
- 接口可以实现多继承,即一个接口可以extends多个接口,间接的解决了Java中的单继承问题
- 一个可以实现多个接口
- JDK中对接口增加了新的特性:
- JDK1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰,定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法
- JDK1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用
接口和抽象类的区别
相同点
- 都不能被实例化
- 接口的实现类或抽象类的子类都只有实现了接口或者抽象类中的方法后才能实例化
不同点
- 接口只有定义,不能有方法的实现,JDK1.8以后可以定义default方法体,而抽象类可以有定义和实现,方法可在抽象类中实现
- 一个类可以实现多个接口,但是一个类只能继承一个抽象类,所以接口可以间接的实现多继承
- 接口成员变量默认为public static final,必须赋初值,不能被修改,其所有的成员方法都是public abstract的,抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值,抽象方法被abstract修饰,不能被private,static,synchronized和native等修饰
这篇关于Java抽象类和接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!