版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
接口
一、接口的概念
接口是一种能力,接口是一种约定,接口是一种规范,接口是一种标准。
二、接口的语法
1. 接口相当于特殊的抽象类,定义方式,组成部分都和抽象类类似。
2. 定义语法: interface 接口名{}
3. 特点
a) 接口中所有的方法都是公开抽象方法 默认为public abstract 修饰
b) 接口中所有的属性都是公开静态常量 默认为public static final修饰
c) 接口中没有构造方法,动态|静态代码块
4.接口和抽象类的异同点
a) 相同点
1. 都能编译生成 .class 文件
2. 都不能new对象
抽象类:不够完整 不够具体 在现实生活中不存在,所以不能new对象
接口:不够具体 不够完整 没有构造方法
3. 都可以声明引用
b) 不同点
1. 接口中所有的属性都是公开静态常量,默认为public static final 修饰
抽象类没有具体要求
2. 接口中所有的方法都是公开抽象方法,默认为public abstract修饰
抽象类没有具体要求
3. 接口中不能定义构造方法,动态|静态代码块
抽象类可以定义
4. 接口是多继承 ,抽象类是单继承
详见代码TestInterface.java
三、接口的应用
父类中只能提供共性的属性和方法,没有办法提供子类中独有的属性和方法,子类只能在类中自己提供,比较麻烦,可以通过定义接口来为子类扩充功能。
1.接口是一种能力,接口是一种约定
定义接口:制定具有某种能力的接口
约定方法:实现接口的具体方法
2. 接口的实现
a). 接口可以附加给类,那么一旦将一个接口附加给了一个类,那么就代表这个类具
备了这种能力
语法:class 类 extends 父类 implements 接口名{}
类:实现类
b). 一个类实现了一个接口,必须实现接口中所有的抽象方法,
否则这个类还是一个抽象类.
注意:接口中方法默认为public abstract 修饰 ,那么实现类实现接口覆盖接口中的
抽象方法,访问修饰符必须是public。
c). 接口支持多实现,一个类可以同时实现多个接口,多个接口之间用,隔开
语法: class 类名 extends 父类 implements 接口名1,接口名2…接口名n{}
3. 接口引用
接口可以声明为引用,指向的是实现类对象。
语法:接口类型 接口引用 = new 实现类对象();
特点:通过接口引用只能调用接口中定义的属性和方法,不能调用实现类定义的属性
和方法。
4. 接口的多态
不同引用都可以指向同一个对象,不同的引用关注点不同,所能看到对象的范围不
同,只能调用引用中声明的属性和方法。
接口作为方法形参,不再局限于对象的类别(父类),只是关注于是否具备某种能力,可
以更自然的实现多态。
接口可以作为返回值类型,可以作为数组类型。
详见代码:TestAnimal.java以及TestInterface1.java
5. java中常见的关系
a. 类与类: 单继承
class 子类 extends 父类
b. 类与接口:多实现
class 实现类 implements 接口1,接口2…接口n{}
c. 接口与接口:多继承
interface 子接口 extends 父接口1,父接口2…父接口n{}
6. 接口的转型
详见代码TestInterface2.java