抽象 (has-a)
抽象: 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用,有时以至于它没有具体的实例,这样的类叫做抽象类。
- abstract :抽象的
- abstract 可以用来修饰类:抽象类
– 抽象类不能被实例化
– 抽象类中有构造器,便于子类实例化时调用 - abstract 可以用来修饰方法:抽象方法
使用抽象
创建抽象类:
//加入 abstract 关键字
public abstract class Father {
}
创建抽象方法:
//没有方法体
public abstract void print();
抽象类的特性: 子类继承时必须实现父类中所有的抽象方法(除非自身也是抽象类)
抽象方法特性: 抽象方法没有方法体,可被子类覆盖重写
接口
接口: Java中不支持多继承,一个子类只能拥有一个父类,而有时候需要几个类中生出一个子类,来继承他们所有属性和方法。有了接口,就可以实现子类多继承的效果。
- 接口使用interface来定义
- 接口与类为并列关系
- 接口中的属性只能定义全局常量
- 接口中的方法只能是抽象方法
- 接口中不能定义构造器,因此接口不能被实例化
- 接口与类为实现关系,并且类可以实现多个接口
- 接口与接口之间为继承关系,并且可以多继承
使用接口
//创建接口
public interface Father {
}
接口中只能定义全局常量和抽象方法
public interface Father {
//全局常量
public static final String str = "123";
//抽象方法(无需abstract)
public void print();
}
通过类来实现,可实现多个接口
public class Son implements Aa,Bb,Cc {
//实现接口方法
}