【Java】6.5 抽象类
生活随笔
收集整理的這篇文章主要介紹了
【Java】6.5 抽象类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
抽象類和抽象方法
為什么要使用抽象類
抽象類和抽象方法
抽象類:使用abstract修飾的類就是抽象類。總結起來,抽象類的特性就是有得有失:
- 得:就是可以設置抽象方法
- 失:就是不能創建實例
- 其他的普通類可以有的抽象類也可以有
【抽象類的注意點】
抽象方法:使用abstract修飾且沒有方法體(即沒有花括號的方法)
【抽象方法的注意點】
為什么要使用抽象類
主要和“模板模式”結合在一起
需求場景:程序需要實現A方法,但是A方法又需要調用B方法。但此時,B方法暫時不知道如何實現(不同的子類對B方法的實現【是不同】)。此時就是需要把B方法定義成抽象方法。
Volume.java
//定義一個抽象類 public abstract class Volume {public Volume() {}// 定義一個抽象的實現求體積的方法public abstract double getVolume(); }Cube.java?
public class Cube extends Volume {// 定義成員變量,正方體的邊長private double edge;// 定義一個無參數的構造器,一個有參數構造器public Cube() {}public Cube(double edge) {this.edge = edge;}// 因為成員變量時private修飾,所以需要setter和getter方法獲取相關數據public double getEdge() {return edge;}public void setEdge(double edge) {this.edge = edge;}// 重寫getVolume方法@Overridepublic double getVolume() {return edge * edge * edge;}}Cylinder.java
public class Cylinder extends Volume {// 定義成員變量,圓柱體的底面半徑和高private double radius;private double height;// 創建兩個構造器,一個無參數構造器,一個有參數構造器public Cylinder() {}public Cylinder(double radius, double height) {this.radius = radius;this.height = height;}/// 因為成員變量時private修飾,所以需要setter和getter方法獲取相關數據public void setRadius(double radius) {this.radius = radius;}public double getRadius() {return radius;}public void setHeight(double height) {this.height = height;}public double getHeight() {return height;}// 重寫getVolume方法@Overridepublic double getVolume() {return Math.PI * radius * radius * height;} }AbstractTest.java
public class AbstractTest {public static void main(String[] args) {// 多態,向上轉型Volume cylinder = new Cylinder(3.14, 5.56);Volume cube = new Cube(5.6);System.out.println("圓柱體的體積:" + cylinder.getVolume());System.out.println("正方體的體積:" + cube.getVolume());} }【注釋1】當static修飾方法的時候,說明這個方法屬于類本身。調用這個方法時,可以直接通過類調用。當使用abstract修飾該方法時,該方法是沒有方法體的。此時,若通過類調用該方法,就會出現錯誤(調用沒有方法的方法體)
總結
以上是生活随笔為你收集整理的【Java】6.5 抽象类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java】6.4 final 修饰符
- 下一篇: 【Java】6.6 Java 8 改进的