abstract修飾的類是不完整的類;方法沒有被完全實現,必須聲明爲抽象類;抽象類不能實例化(new 會出現編譯錯誤),通過子類拓展。包含抽象方法的類,必須用abstract修飾(否則,出現編譯錯誤)。
public abstract class AbstractDemo {
int x = 0;
int y = 0;
AbstractDemo(int x, int y){
this.x = x;
this.y = y;
}
abstract void add(int x,int y);
}
public class SimpleAbstractDemo extends AbstractDemo {
SimpleAbstractDemo(int x, int y) {
super(x, y);
}
@Override
void add() {
System.out.println("x+y=" + (x + y));
}
public static void main(String[] args){
AbstractDemo abstractDemo = new SimpleAbstractDemo(3,5);
abstractDemo.add();
}
}
抽象方法add(),不能用private、static修飾,否則編譯報語法錯誤。抽象類不能被實例化,需要完全實現抽象方法的子類裏面super調用初始化域成員變量值。abstract修飾的方法所屬的類一定是抽象類,abstract修飾的類一定有抽象方法存在是不成立的。通過方法的覆蓋實現多態屬性。
對一個沒有聲明爲abstract類進行修改,修改爲abstract類,嘗試創建類的實例則會報錯。若對一個abstract類修改,不使用abstract修改則不會影響二進制的兼容性。