日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】6.5 抽象类

發布時間:2025/3/20 java 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】6.5 抽象类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

抽象類和抽象方法

為什么要使用抽象類


抽象類和抽象方法

抽象類:使用abstract修飾的類就是抽象類。總結起來,抽象類的特性就是有得有失:

  • 得:就是可以設置抽象方法
  • 失:就是不能創建實例
  • 其他的普通類可以有的抽象類也可以有

抽象類的注意點

  • 雖然抽象類不能創建實例,但他依然有構造器,它的構造器主要是供其子類構造器調用的
  • 抽象類自己完全沒有抽象方法
  • 抽象類總是不能創建實例的 ——?即使它沒有包含任何抽象方法
  • 抽象方法:使用abstract修飾且沒有方法體(即沒有花括號的方法)

    抽象方法的注意點

  • 抽象方法沒有方法體
  • 只要在方法后出現花括號,即使花括號中沒有任何代碼,那也是方法體
  • abstract不能與final同時出現:
  • 對于abstract方法而言,該方法需要子類去重寫該方法,final不允許被重寫,因此不能同時出現
  • 對于abstract類而言,該類是希望有子類去繼承它的,final修飾的類是不允許被繼承的
  • abstract與static不能同時修飾方法(見注釋1
  • abstract和private不能同時修飾方法,因為abstract修飾的方法希望被子類重寫,而private修飾的方法子類是無法獲取的
  • 為什么要使用抽象類

    主要和“模板模式”結合在一起

    需求場景:程序需要實現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 抽象类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。