抽象类和抽象方法

含有抽象方法(用abstract修饰没有方法体的方法)的类必须用abstract修饰,但是用abstract修饰的类可以不包含抽象方法,可以含有普通方法(含有方法体),抽象类不能创建实例,
(注意:一个类含有抽象方法,该类必须要用abstract修饰,但是一个用abstract修饰的类,可以是空的,可以是含有普通方法,抽象类只能继承使用,不能new出来(直接报错),继承抽象类的类,必须实现抽象类中的抽象方法,如果存在多重继承 抽象类—->继承类(实现抽象方法)——->再继承(这个类可以不用实现抽象类中的抽象方法,因为他的父类已经实现了抽象方法)

接口

接口可以看作是完全抽象的类,里面只有方法名,参数列表和返回类型,默认是包访问权限,接口中的域是隐式static和final的,方法默认是是public的
接口可以被多继承,和多实现,无论是对类来说还是对接口来说
接口中的多态
第九章接口 - 图1
image.png

关于接口能不能new出来,准确来说,接口new出来的的是一个匿名内部类。

image.png

default关键字

可以使用default关键字在接口中写普通方法
image.png

接口中的静态方法

和普通静态方法无异

image.png
image.png
image.png

组合接口时的名字冲突

区分两个不同方法的标志是方法名加参数列表,返回值不能区分。
image.png

嵌套接口

要注意私有接口的使用。在实现某个接口时,并不需要实现嵌套在其内部的接口。
image.png
image.png