10、接口
程序员文章站
2022-04-16 20:22:52
...
一、接口
- Java中的接口是一系列方法的声明,是一些方法特征的集合。
- 一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
- 是用关键字interface定义的
- 可以认为是一个特殊的抽象类
- 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示
二、接口中包含的成员
- 最常见的有全局常量、抽象方法。
- 都是public的
- 注意:接口中的成员都有固定的修饰符
- 成员变量:public static final
- 成员方法:public abstract
- 如果public static final或者public abstract其中的单词少写一个也是可以的,在interface中,他会自动的补齐的,但一般不这么干
- 示例:
interface Inter { public static final int NUM = 3; public abstract void show(); }
三、接口是不可以创建对象的,因为有抽象方法
- 需要被子类实现,子类对接口中的抽象方法全都覆盖,子类才可以实例化
- 否则子类是一个抽象类
四、实现接口
用关键字 implements 不用extends
class Test implements Inter { public void show() { //...... } }
五、接口可以被类多实现
- 接口的出现将"多继承"通过另一种形式体现出来,即"多实现"
- 是对java不支持多继承的转换形式
六、接口之间可以继承,接口之间可以多继承
interface A { void methodA(); } interface B { void methodB(); } interface C extends A,B { void methodC(); } class D implements C { public void methodA(){} public void methodB(){} public void mehtodC(){} }
七、接口的特点
- 接口是对外暴露的规则
- 接口是程序功能的扩展
- 接口的出现降低了耦合性
- 类与接口之间是实现关系
- 类可以继承一个类的同时实现多个接口,所以,接口的出现避免了单继承的局限性
- 接口与接口之间可以有继承关系
- 事物的扩展功能用interface来实现
- 示例
abstract class Student { abstract void study(); void sleep() { System.out.println("sleep"); } } interface Smoking//抽烟是扩展功能 { void smoke(); } class Zhang extends Student implements Smoking { void study(){} public void smoke(){} }
八、抽象类与接口
- 抽象类:一般用于描述一个体系单元,将一组共性内容进行抽取,
- 抽象类特点:可以在类中定义抽象内容让子类实现,可以定义非抽象内容让子类直接使用。它里面定义的都是一些体系中的基本内容。
- 接口:一般用于定义对象的扩展功能,是在继承之外还需这个对象具备的一些功能。
1、共性:都是向上不断抽取的结果
2、区别:
- 抽象类只能被继承,而且只能单继承。
- 接口需要被实现,而且可以多实现。
- 抽象类中可以定义非抽象方法,子类可以直接继承使用。
- 接口中都有抽象方法,需要子类去实现。
- 抽象类使用的是 is a 关系。
- 接口使用的 like a 关系。
- 抽象类的成员修饰符可以自定义。
- 接口中的成员修饰符是固定的。全都是public的。
上一篇: 深入java的接口类
下一篇: JVM堆大小的自适应能力 jvm