(1)語法定義:抽象類前使用abstract關鍵字修飾
(2)應用場景
a、在某些情況下,某個父類只是知道其子類應該包含怎樣的方法,但無法準確知道這些子類如何實現這些方法。
b、從多個具有相同特徵的類中抽象出一個抽象類,以這個抽象類作爲子類的模板,從而避免了子類設計的隨意性。
(3)作用
限制規定子類必須實現某些方法,但不關注實現細節
(4)使用規則
a.abstract定義抽象類
b.abstract定義抽象方法,只有聲明,不需要實現
c.包含抽象方法的類是抽象類
d.抽象類中可以包含普通的方法,也可以沒有抽象方法
e.抽象類不能直接創建,可以定義引用變量
(5)抽象方法沒有方法體以分號結束
父類Shape
package shuqi;
public abstract class Shape {
public abstract void areas();
public abstract void circle();
}
子類Rect
package shuqi;
public class Rect extends Shape {
double x, y;
public void show(double x,double y){
this.x =x;
this.y=y;
System.out.println("寬爲"+x+",長爲"+y);
}
public void areas()
{ double s=x*y;
System.out.println(s);
}
public void circle(){
System.out.println(2*(x+y));
}
}
測試類Initial
package shuqi;
public class Initial {
public static void main(String[] args) {
Rect one1=new Rect();
// Circle one2=new Circle();
// Rect one3=new Square();
one1.show(3, 4);
one1.areas();
one1.circle();
// one2.show(2);
// one2.areas();
// one2.circle();
// one3.show(3, 3);
// one3.areas();
// one3.circle();
}
}
運行結果爲:
寬爲3.0,長爲4.0
面積爲12.0
周長爲14.0
注意事項:(1)子類中獨有的方法不可以被父類的引用指向子類的對象所調用
即不可以Shape one1=new Rect();
(2)注意子類中方法和父類中一致(是否有參以及參數類型,個數等等)