1. 接口
1.1 接口的概述
接口是功能的集合,接口只描述所应该具备的方法,并没有具体的实现,具体的实现由接口的实现类来完成。
1.2 接口定义的格式
Public interface 接口名{
属性(常量,值固定不变,不能修改)
方法(抽象方法)
}
属性:public static final 数据类型 变量名 = 数据值;
方法:public abstract 返回值类型 方法名(参数列表);
接口中的成员都是固定格式!!!
1.3 类实现接口的方式
Public class 类名 implements 接口名{
重写接口中的所有方法;
}
1.4 接口的注意事项
- 接口不能创建对象。
- 接口中可以定义变量,固定修饰符 public static final,也可以叫做常量,值不变。
- 接口中可以定义方法,固定修饰符 public abstract。
- 接口没有构造方法。
- 接口与接口之间可以继承,并且多继承!使用extends关键字。
2. 抽象类
2.1 抽象类概述
犬的行为是吼叫和吃饭,缉毒犬的行为是吼叫、吃饭和缉毒,由于犬的种类很多,它们吼叫和吃饭的方式不一样,在描述的时候不能具体化,也就是吼叫和吃饭的行为不明确;在描述行为的时候,行为的具体动作不能明确,这时可以将这个行为写为抽象行为,那么这个类也就是抽象类。在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
2.2 抽象类特点
a:抽象类和抽象方法必须用abstract关键字修饰
抽象类格式: abstract class 类名 {}
抽象方法格式: public abstract 返回值类型 方法名();
b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
c:抽象类中有构造方法,抽象类不能进行实例化,那么要构造方法有什么作用呢?
用于子类访问父类数据时的初始化。
d:抽象类不能实例化那么,抽象类如何实例化呢?
按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
e:抽象类的子类
要么是抽象类。
要么重写抽象类中的所有抽象方法的具体类。
2.3 抽象类的成员特点
A:抽象类的成员特点
a:成员变量:既可以是变量,也可以是常量。
b:构造方法:有。
用于子类访问父类数据的初始化。
c:成员方法:既可以是抽象的,也可以是非抽象的。
B:抽象类的成员方法特性
a:抽象方法 强制要求子类做的事情。
b:非抽象方法 子类继承的事情,提高代码复用性。
3. 接口与抽象类的对比
A:相同点
- 都不能创建对象。
- 都可以写抽象方法。
- 都可以被其他类继承或实现。
B:区别
- 抽象类中可以写普通方法,但接口不可以写,接口中只能包括抽象方法。
- 抽象类中可以定义成员变量,接口中只能定义常量。
- 抽象类有构造方法,(可以为成员变量初始化,也可以让子类使用super调用),接口中没有构造方法。
C:选用
- 优先选用接口,尽量少使用抽象类。
- 需要定义子类的行为,又要为子类提供共性功能时才选用抽象类。