接口
* 特点
** 定义接口的格式: interface 接口名 {}
** 类和接口的关系: 实现的关系 格式: class 类名 implements 接口名 {}
** 接口中没有构造方法
** 接口不能直接对其实例化,但是可以通过多态的形式对其进行间接的实例化
** 接口的子类问题:
** 可以是抽象类(但是意义不大)
** 可以是具体的类(这个具体的类需要重写接口中所有的抽象方法)
* 成员问题
** 成员变量 只能是常量 存在默认的修饰符 public static final
** 构造方法 没有构造方法
** 成员方法 只能是抽象方法 存在默认的修饰符 public abstract
* 类与类 , 类与接口 , 接口与接口的关系
** 类与类 继承的关系,只能是单继承 , 但是可以多层继承
** 类与接口 实现的关系,可以是单实现也可以是多实现,并且一个类在继承另一个类的同时去实现多个接口
** 接口与接口的关系 继承关系,可以是单继承也可以是多继承
* 抽象类和接口的区别
** 成员区别
抽象类:
** 成员变量 可以是变量也可以是常量
** 构造方法 有构造方法,构造方法的作用: 用于子类在访问父类数据的时候对父类数据进行初始化
** 成员方法 可以是抽象方法,也可以是非抽象方法
接口
** 成员变量 只能是常量 存在默认的修饰符 public static final
** 构造方法 没有构造方法
** 成员方法 只能是抽象方法 存在默认的修饰符 public abstract
** 关系的区别
** 类与类 继承的关系,只能是单继承 , 但是可以多层继承
** 类与接口 实现的关系,可以是单实现也可以是多实现,并且一个类在继承另一个类的同时去实现多个接口
** 接口与接口的关系 继承关系,可以是单继承也可以是多继承
** 设计理念的区别
抽象类 可以被继承 体现的是一种"is a"的关系 定义的都是该继承体系中共性的内容
接口 可以被实现 体现的是一种"like a"的关系 定义的都是该继承体系扩展性的内容
* 猫狗案例接口版 |
|