接口
- 开闭原则:一个好的设计,对于扩展来说,应该是开放的,对于修改来说,应该是关闭的。
- 作用:
- 1.在没有继承关系的类之间,也可以让它们共享行为。//对java继承的一种补充。
- 2.为java中的类与类之间的单继承,提供多实现。
- 关键字
- interface
- xxxable 类名加able
- 访问修饰符只能是public 或默认
- public interface Serviceable{
- public static final int A = 100;
- 属性/不能为变量,只能是公共的静态常量
- int B = 1000;
- //就算一个修饰符不写,也会默认公共的静态常量
- 构造方法–接口没有构造方法,说明不能直接产生对象
- public abstract void changeoil();
- 行为方法–只能有抽象方法
- “ public default void turnupEnginee();
- —–在JDK1.8中,接口可以拥有实现方法,只不过要加default关键字”
- void turnupEnginee();
- 就算不写public abstract 关键字,也会默认公共的抽象方法。
}
- 就算不写public abstract 关键字,也会默认公共的抽象方法。
- public static final int A = 100;
接口的用法
- 1.接口继承接口 –允许多继承!(extends)
- public interface Serviceable extends ChangeOliable,TurnupEngineeable{
}
- public interface Serviceable extends ChangeOliable,TurnupEngineeable{
- 2.类可以实现接口!(implements)
- 使用implements 关键字,必须实现接口里面的所有抽象方法,否则这个类就是抽象类
- 类实现接口是多实现,也就是一个类可以实现多个接口
- public class Alto implements ChangeOilable,TurnupEngineeable{//抽象方法重写}
- 接口引用指向实现类的对象,只能看到来自接口的方法。
设计
- 设计师需要确认,把那些抽象方法写到父类,那些写到接口中去?
- 把一个类与生俱来一脉相承的方法写到抽象类中去,把附属添加的行为写到接口中去!
- 以面向对象的角度考虑,将一个类与自身的特征和行为和依赖于外部的可选特征和行为分离,让类尽可能的单纯,即解耦。
- 判断程序好坏
- 高内聚,低耦合(能做的事自己做,不要和别人发生关系)
接口和抽象的区别
抽象类
- 区别
- 定义语法
- 关键字//abstract class
- 访问修饰符 //四种都可以
- 定义属性 //可有任意属性
- 构造方法 //有,可以有初始化块
- 方法的实现 //可以实现方法
- 使用语法
- 可以被子类继承,单继承
- 设计思想
- 把一个类与生俱来一脉相承的方法写到抽象类中去,把附属添加的行为写到接口中去!
接口
- 区别
- 定义语法
- 关键字//interface
- 访问修饰符 //只能用public 和默认
- 定义属性 //只能有public staatic final常量
- 构造方法 // 无构造,无初始化块
- 方法的实现 //在JDK1.8中,接口可以拥有实现方法,只不过要加default关键字
- 使用语法
- 可以被接口继承,多继承,可以被实现类实现,多实现
- 设计思想
- 外部附属添加的行为定义在接口中
标记接口
- 没有实现方法,一个标记