Java学习回忆录-基础理论-012
接口
概述: 从狭义的角度讲是指java中的interface
从广义的角度讲是对外提供规则的都是接口
语法:class 类名 implements 接口名{}
接口特点:
1. 声明接口
interface
2. 接口不能创建对象.
但是可以以多态的形式创建.
接口类型 = 接口的实现类对象.
3. 类和接口.是实现的关系
注意,类不是去继承接口,而是实现.implements
4. 类实现接口
1. 类实现了一个接口,要重写接口中的所有方法(接口中的方法,全部是公共抽象方法)
2. 类实现类一个接口, 类如果不想重写接口中的方法,类可以声明为抽象类(抽象类中允许有抽象方法)
接口成员的特点:
1. 成员变量
1. 公共静态常量 public static final 修饰的.
2. 成员方法
公共抽象方法 public abstract 修饰的.
3. 构造方法
接口中没有构造方法.
接口内部内容的定义
成员变量:只能是常量,并且是静态的、公共的
默认修饰符:public static final ,三个关键字可以互换位置,修饰符是默认给出的,可以不写
构造方法:接口没有构造方法,继承的类不会访问接口,
一个没有继承的任何类的子类,默认继承Object类
成员方法:只能是抽象方法
默认修饰符:public abstract
建议:这个自己手动给出
类与类、类与接口、接口与接口的关系
类与类: 继承关系(extends),只能单继承,可以多层继承
is a 的特点,Cat extends Animal 就是继承.
注意: java 只支持单继承,一个子类只能有一个父类(只能有一个爹)
java 不支持多继承,但是可以多层继承(继承体系)
类与接口:实现关系(implements),可以单实现,也可以多实现
并且还可以在继承一个类的同时实现多个接口
注意:java 不支持多继承,但是java 支持多实现.
接口与接口:继承关系(extends),可以单继承,也可以多继承。
注意. 接口可以继承多个接口,只有在接口这里,java 才支持多继承. 这是特例.
抽象类和接口的区别
1. 成员区别
抽象类:
成员变量:可以变量,也可以是常量 ->给子类使用
构造方法:有 ->给子类使用
成员方法:可以抽象,也可以非抽象 ->给子类使用
抽象的成分比较复杂,什么都可以有.
结论: 一个类中一旦存在抽象方法,那么这个类必须是抽象类.
反过来, 一个类是抽象类,这个类中不一定要有抽象方法。
接口
成员变量:只可以是常量,public static final
构造方法:接口不能有构造方法.
成员方法:只可以抽象,public abstract
2. 关系区别
类与类:
继承、单继承
类与接口:
实现,单实现,多实现
接口与接口
继承,单继承,多继承
3.设计理念区别
抽象类: 被继承体现的是: is a 的关系,抽象类中定义的是该继承体系的共性功能
理念: 继承提高了代码复用性.
将共性的代码放在了父类. 父类无法确定具体的行为,就将行为设置为抽象的. 有子类去继承并重写.
接口:被实现体现的是: like a 的关系,接口中定义的是该继承体系的扩展功能
理念: 对类进行功能的扩展.
4. 语法不同.
抽象类:class abstract 抽象类名
接口:interface 接口名
5. 使用方式不同.
抽象类,是由子类去继承(extends)抽象类,并重写抽象方法(如果有)
一个子类只能继承一个父类
接口, 是有实现类实现(implements)接口,并重写接口中的所有方法.
一个类可以实现多个接口.