接口

只能制定规则(有哪些功能)类通过interface关键字实现接口,JDK8之前的接口只能有静态常量和抽象方法,JDK8之后添加静态方法接口可直接调用,添加默认方法通过子类对象调用。

类似于抽象类和抽象类的区别就是抽象类还可以实现一部分

接口中的成员变量默认的修饰符为public static final

抽象类

抽象类不能创建实例化对象,但是抽象类中存在构造方法用于子类继承父类时对父类数据的初始化。

子类在继承抽象类时必须实现抽象类中的抽象方法,如果不实现抽象放法则子类必须也为抽象类。

存在抽象方法的类一定是抽象类但是抽象类不一定存在抽象方法。

抽象类中的抽象方法不能被final,static以及private修饰,final修饰的方法表示不能被重写,被private修饰的方法子类无法继承,由于继承抽象类的类需要实现父类中的抽象方法,不能被重写或者无法继承也就无法重写父类的抽象方法,所以final和private不能修饰抽象类中的抽象方法

由于static修饰的方法属于类的方法,继承该类的子类不能实现(使用static修饰的方法被重写时父类的方法会被隐藏,而不是被实现)父类被static修饰的方法,如果static可以修饰抽象方法那么子类继承父类后就必须实现父类的抽象方法,这显然与被static修饰的方法存在矛盾。

一个接口可以继承多个接口

一个类只能继承继承一个类

一个类可以实现多个接口

final关键字

可以用来修饰类,属性和方法

final修饰类表示该类不能被继承

final修饰的方法表示该方法不能被重写

final修饰的属性属性是常量,可以通过构造方法对常量进行初始化,也可以直接在定义常量时直接赋值