1.抽象类
abstract 修饰类为抽象类,抽象类对象无法独立存在,即不能 new 对象
抽象类的作用:
- 可被子类继承,提供共性属性和方法
- 可声明为引用,更自然的使用多态
抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类
子类继承抽象类后,必须重写父类中所有的抽象方法,否则子类还是抽象类
public abstract class Animal {
public Animal() {
}
public abstract void eat();
public void run() {
System.out.println("...");
}
}
public class Dog extends Animal {
@Override
public void eat() {
}
}
2. 接口
接口相当于特殊的抽象类,定义方式、组成部分与抽象类类似
没有构造方法,不能创建对象
只能定义:公开静态常量、公开抽象方法
2.1 接口的概念
微观概念:接口是一种能力
接口的定义:代表某种能力
方法的定义:能力的具体要求
宏观概念:接口是一种标准
接口的规范:
- 任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类
常用:由抽象类来实现接口,不必重写接口的方法;可以全部不重写或只重写一部分方法 - 实现接口中的抽象方法时,访问修饰符必须是 public
接口引用:
接口也可以声明为引用,并指向实现类对象
2.2 常量接口、标记接口
常量接口
public interface ConstInterface {
String MONDAY = "Monday";
String SUNDAY = "Sunday";
}
// demo
String day = ConstInterface.MONDAY;
标记接口中不包含任何成员,仅仅用作标记
public interface Serializable {
}
public interface Cloneable {
}
2.3 接口回调
接口回调:先有接口的使用者,后有接口的实现者
3. 接口 VS 抽象类
- 共同点:都不能被实例化
- 抽象类是模版式设计,接口是契约式设计
- 接口
- 方法默认是 public abstract(可省略)
- 属性默认是 public static final(可省略)
- can-do 关系
- 抽象类
- is-a 关系 (is 不是'是',属于)
4. 常见关系
类与类:单继承 extends Parent
类与接口:多实现 implements Interface1, Interface2 ... interface n
接口与接口:多继承 extends interface1, interface2 ... interface n
网友评论