抽象角色
abstract
和interface
是Java语言中对抽象角色定义进行支持的两种机制。其中abstract
用于抽象类,interface
用于接口(类)。
抽象类与接口的区别
抽象类 | 接口 | |
---|---|---|
实例化 | 不能 | 不能 |
类 | 一种继承关系,一个类只能使用一次继承关系 | 一个类可以实现多个接口类 |
数据成员 | 可以有自己的 | 静态的,不能被修改,必须为static final,一般不在此定义 |
方法 | 可以私有的,非abstract方法,该方法必须实现 | 不可有私有的,不能有实现 |
关系 | "is-a"继承关系 | "realize-a"实现关系 |
用法 | 使用关键字 extends | 使用关键字 implements |
具体使用实例
abstract
// 抽象角色:抽象类
abstract class Product {
// 所有产品的公共业务方法
public void methodSame(){
......
}
// 声明抽象业务方法
public abstract void methodDiff();
}
// 具体类
public class ConcreteProduct extends Product{
//业务方法
public void methodDiff() {
//业务方法的实现
}
}
interface
// 抽象角色:接口(类)
interface Chart {
public void display();
}
//具体产品类(实现产品类)
public class HistogramChart implements Chart {
public HistogramChart(){
System.out.println("创建柱状图!");
}
public void display() {
System.out.println("显示柱状图!");
}
}