接口
当一个抽象类, 如果抽象类中所有方法都是抽象的, 那么我们就可以把它定义为一个接口, 接口是对行为的抽象, 类是对属性和行为的抽象. 接口没有具体方法, 也没有属性.
接口中可以定义常量.
接口也能继承接口, 可以多级继承, 也可以继承于多个父接口.
interface A{ @Override @Override @Override @Override |
接口的实现
关键字: implements
语法: class 类名 implements 接口名 {}
一个类如果实现了接口, 就必须要实现接口中所有的抽象方法.
接口在 JDK1.8 中的特性
接口可以定义静态的方法, 用接口名打点调用.
可以选择性地实现接口中的方法, 定义默认方法即可. 语法: public default void 方法名 (){}
接口被类实现的时候没有强制性, 可以重写方法.
接口的好处
1. 接口定义的是一种标准, 可以使我们的代码分层开发, 分模块开发.
2. 降低代码的耦合度, 提高代码的可扩展性和可维护性.
3. 接口改进了单继承的局限.
接口和抽象类的区别
1. 接口是行为的抽象. 可以有静态方法, 抽象方法和默认方法. 抽象类可以有所有方法.
2. 接口和抽象类都不能实例化, 接口需要类来实现, 然后通过类实例化; 抽象类需要子类来继承, 然后通过子类实例化.
3. 抽象类智能单继承, 接口可以多继承 (jdk1.7), 接口还可以多实现.
4. 接口中的属性是 static final 类型的, 抽象类中的属性跟普通类中的属性没有区别.
5. 接口中的方法默认就是抽象的, 不需要加 abstract, 抽象类中的抽象方法需要加上 abstract.
父子类之间类型转换
子类→父类:
语法: 父类名 对象名 = new 子类名 ();
在父子类, 抽象类, 接口中, 都是可行的. 子类的类型可以自动转换成父类的类型, 如果子类重写了父类的方法, 那么使用父类的引用调用方法时, 调用的是子类的方法.
属性是不适用的, 属性没有重写的概念. 子类的实例赋给父类的引用的时候, 调用属性时, 调用的是父类的属性.
父类→子类:
前提: 这个父类的类型的引用有真身, 而且只能转换成这个真身对应的子类类型.
语法: 子类名 新对象名 = (子类名) 原对象名;
来源: http://www.bubuko.com/infodetail-2932378.html