生活随笔
收集整理的這篇文章主要介紹了
Java 抽象类和抽象方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java 抽象類和抽象方法
- 抽象類是它的所有子類的公共屬性的集合,是包含一個或多個抽象方法的類。
- 使用抽象類可以充分利用這些公共屬性來提高開發和維護程序的效率。
- 抽象方法必須為public或protected。(因為如果是private,則不能被子類繼承,子類無法實現該方法)抽象方法沒有方法體。
- 抽象類和抽象方法用abstract修飾。
- 子類如果不是抽象類,則必須重寫抽象類中的全部抽象方法。如果子類沒有實現父類的抽象方法,必須將子類也定義成抽象類。
- 抽象類不能用final關鍵字聲明,因為抽象類必須有子類,但是final定義的類不能有子類。
- 抽象類不能直接實例化,需要依靠子類向上轉型的方式實例化。
public abstract class Animal {public abstract void shout();
}
public class Dog extends Animal {public void shout() {System
.out
.println("汪汪汪");}
}
public class Test {public static void main(String
[] args
) {Animal a1
= new Dog();a1
.shout();}
}
抽象類和普通類的區別:
- 抽象類比普通類多了一些抽象方法,其他組成部分和普通類完全一樣。
- 普通類對象可以直接實例化,抽象類對象必須向上轉型之后才可實例化。
- 子類繼承抽象類,子類需要重寫方法。但是子類繼承普通類,子類可以有選擇地決定是否需要重寫方法。
public abstract class Shapes {public abstract double getArea();public abstract double getPerimeter();
}
public class Circle extends Shapes {double r
;public Circle(double r
) {this.r
= r
;}public double getArea() {return r
*r
*Math
.PI
;}public double getPerimeter() {return 2*Math
.PI
*r
;}
}
public class Square extends Shapes{int width
;int height
;public Square(int width
, int height
) {this.width
= width
;this.height
= height
;}public double getArea() {return width
*height
;}public double getPerimeter() {return 2*(width
+ height
);}
}
public class Test {public static void main(String args
[]) {Circle c1
= new Circle(1.0);System
.out
.println("圓形面積為 " + c1
.getArea());System
.out
.println("圓形z周長為 " + c1
.getPerimeter());Square s1
= new Square(1,1);System
.out
.println("正方形面積為 " + s1
.getArea());System
.out
.println("正方形周長為 " + s1
.getPerimeter());}
}
總結
以上是生活随笔為你收集整理的Java 抽象类和抽象方法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。