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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

9.JAVA-抽象类定义

發布時間:2025/6/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 9.JAVA-抽象类定义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.抽象類

  • 抽象類,用來表示一個抽象概念.
  • 是一種只能定義類型,而不能產生對象的類,所以定義了抽象類則必須有子類的出現.
  • 抽象類的好處在于能夠明確地定義子類需要覆寫的方法
  • 抽象類需要使用abstract聲明.
  • 抽象類里可以實現抽象方法,該方法特征在于:只有聲明,并沒有方法體(所以子類必須全部覆寫,并且子類不能為抽象類)

?

比如圖形(Shape)類, 就是一個抽象的概念,因為我們無法計算這個“圖形”的面積,所以它的成員函數area()是空的。

而繼承它的子類(矩形,橢圓形,三角形等)就可以去覆寫area()成員函數. 里面通過數學公式,計算出面積.

參考圖形(Shape)類,代碼如下:

abstract class Shape //抽象的圖形類 {abstract public double area(); //abstract修飾的方法為抽象方法,無需實現方法體.但是必須被子類覆寫 }class Ellipse extends Shape //橢圓類 {private double wr; //橢圓的半徑寬度private double hr; //橢圓的半徑高度public Ellipse(double wr,double hr){this.wr = wr;this.hr = hr;}public double area(){return 3.14159*wr*hr;} }public class Test{public static void main(String args[]){//Shape s = new Shape(); //如果定義抽象類,則將會報錯Ellipse e = new Ellipse(2.5,1);System.out.println("Ellipse area = "+e.area());} }

?

需要注意的是:

  • 抽象類可以存在構造方法,用來初始化抽象類的屬性,
  • 抽象類不能使用final定義,

?

?

2.抽象內部類定義

在java中,如果我們抽象類的子類只有一個的話,則可以將它封裝為抽象內部類里,從而為用戶隱藏了這個無需知道的類.在類庫中很常見.

示例如下:

abstract class A //抽象類 {abstract public void printData();//abstract修飾的方法為抽象方法,無需實現方法體.但是必須被子類覆寫
static private class B extends A //需要在抽象類里隱藏的內部類{private int Data=12; public void printData(){System.out.println("B Data:"+this.Data); //打印內部類的Data值}}static public A getInstance() //獲取實例{return new B(); //通過靜態方法來獲取要隱藏的靜態抽象內部類 (靜態方法里只能使用靜態變量)} }public class Test{public static void main(String args[]){A a = A.getInstance();a.printData(); //等價于: A.getInstance().printData();} }

打印如下:

?

?

抽象類缺點:

  • 由于Java的單繼承,每個類只能從一個抽象類繼承.沒有接口靈活.

?

下章學習:?10.JAVA-接口、工廠模式、代理模式、詳解

?

轉載于:https://www.cnblogs.com/lifexy/p/10826817.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的9.JAVA-抽象类定义的全部內容,希望文章能夠幫你解決所遇到的問題。

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