詳解Java中的抽象類和抽象方法

引言

實例圖片

如上圖慷垮,二維圖形類有三個子類揖闸,分別是正方形類三角形類料身,圓形類汤纸;

我們都知道要求正方形的面積,直接使用面積公式邊長的平方即可芹血,同理三角形的是底乘高除以2贮泞,圓的面積是\pi乘以半徑的平方。那么二維圖形的面積該怎么算呢幔烛?我們無法給出一個通用的方式啃擦。那么二維圖形就不能計算面積了嗎?不是的饿悬。只要是二維平面的圖形令蛉,就可以計算面積,只是沒有一個通用的公式而已乡恕。由此可見正方形言询,三角形俯萎,圓形的面積可以很具體的給出,但是二維圖形不能运杭,因為它很抽象夫啊。

由此可得二維圖形類的面積計算應該是抽象的,是抽象方法辆憔。

如果類中的某個方法撇眯,無法具體的給出,它就該是個抽象方法虱咧。

抽象方法的定義

Java中普通方法的定義方式是

訪問權(quán)限 返回類型 方法名(有參數(shù)填寫參數(shù)熊榛,沒參數(shù)為空){

方法內(nèi)部代碼;

}

因為抽象方法我們無法給出具體的實現(xiàn)腕巡,所以抽象方法的定義與普通方法有所不同玄坦。定義方式如下:

訪問權(quán)限 abstract 返回類型 方法名(有參數(shù)填寫參數(shù),沒參數(shù)為空);

注意:因為不知如何實現(xiàn)绘沉,所以沒有大括號了煎楣。

抽象方法的使用

抽象方法必須聲明在抽象類中。

抽象類的定義方式如下:

訪問權(quán)限 abstract class 類名{
    
}

子類在繼承抽象類時车伞,必須覆蓋重寫全部的抽象方法择懂。(也叫實現(xiàn)方法)

我們可以寫一下引言中的例子:

二維圖形類定義如下:

package com.sjdwz;
/**
 * @Description 二維圖形類,抽象類另玖,有計算面積的抽象方法
 * @Date 2022/3/15
 * @Created by 隨機的未知 sjdwz.com
 */
public abstract class Graphics2D {
    public abstract double getArea();
}

正方形類的定義如下:

package com.sjdwz;
/**
 * @Description 正方形類
 * @Date 2022/3/15
 * @Created by 隨機的未知 sjdwz.com
 */
public class Square extends Graphics2D{
    //邊長
    private int length = 6;
    //重寫父類計算面積的方法
    @Override
    public double getArea() {
        return this.length * this.length;
    }
}

圓形類的定義如下:

package com.sjdwz;
/**
 * @Description 圓形類
 * @Date 2022/3/15
 * @Created by 隨機的未知 sjdwz.com
 */
public class Circle extends Graphics2D{
    //半徑長
    private int radius = 6;
    //重寫父類計算面積的方法
    @Override
    public double getArea() {
        return 3.14 * this.radius * this.radius;
    }
}

測試類的定義如下:

package com.sjdwz;
/**
 * @Description 測試類
 * @Date 2022/3/15
 * @Created by 隨機的未知 sjdwz.com
 */
public class Test {
    public static void main(String[] args) {
        Square square = new Square();
        Triangle triangle = new Triangle();
        Circle circle = new Circle();
        System.out.println("正方形的面積時"+square.getArea());
        System.out.println("三角形的面積時"+triangle.getArea());
        System.out.println("圓形的面積時"+circle.getArea());
    }
}

注意事項

關于抽象類和抽象方法有如下注意事項:

  1. 抽象類不能創(chuàng)建對象
    抽象類的對象困曙,調(diào)用該抽象對象抽象方法,但是抽象方法沒有具體實現(xiàn)谦去,調(diào)用起來沒有任何意義慷丽;
  2. 抽象類中可以有構(gòu)造方法,可供子類創(chuàng)建對象時哪轿,初始化父類成員使用
    子類的構(gòu)造方法之中盈魁,是有默認的super()方法的,所以需要訪問父類的構(gòu)造方法窃诉,那么父類的構(gòu)造方法需要存在;
  3. 抽象類中赤套,并不一定要包含抽象方法飘痛,但是抽象方法所在的類必須時抽象類
    沒有包含抽象方法的抽象類,目的是不想讓調(diào)用者創(chuàng)建該對象容握,通常用于某些特殊的類結(jié)構(gòu)設計宣脉;
  4. 抽象類的子類,必須重寫抽象父類的所有抽象方法剔氏,除非子類也是抽象類
    如果子類不重寫所有抽象方法塑猖,那么子類中還包含抽象方法竹祷,還應該是抽象類。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末羊苟,一起剝皮案震驚了整個濱河市塑陵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜡励,老刑警劉巖令花,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凉倚,居然都是意外死亡兼都,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門稽寒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扮碧,“玉大人,你說我怎么就攤上這事杏糙》移迹” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵搔啊,是天一觀的道長柬祠。 經(jīng)常有香客問我,道長负芋,這世上最難降的妖魔是什么漫蛔? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮旧蛾,結(jié)果婚禮上莽龟,老公的妹妹穿的比我還像新娘。我一直安慰自己锨天,他們只是感情好毯盈,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著病袄,像睡著了一般搂赋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上益缠,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天脑奠,我揣著相機與錄音,去河邊找鬼幅慌。 笑死宋欺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播齿诞,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼酸休,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祷杈?” 一聲冷哼從身側(cè)響起斑司,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吠式,沒想到半個月后陡厘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡特占,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年糙置,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片是目。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡谤饭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出懊纳,到底是詐尸還是另有隱情揉抵,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布嗤疯,位于F島的核電站冤今,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茂缚。R本人自食惡果不足惜戏罢,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脚囊。 院中可真熱鬧龟糕,春花似錦、人聲如沸悔耘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衬以。三九已至缓艳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泄鹏,已是汗流浹背郎任。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留备籽,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像车猬,于是被迫代替她去往敵國和親霉猛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 抽象方法 被abstract修飾的實例方法 只有方法申明珠闰,沒有方法實現(xiàn)(參數(shù)列表后面沒有大括號惜浅,而是分號) 不是用...
    有夢想的狼閱讀 247評論 0 1
  • 關鍵字 abstract 抽象方法:在類中沒有方法體的方法,就是抽象方法伏嗜。抽象類:含有抽象方法的類就叫抽象類坛悉。 抽...
    望月成三人閱讀 313評論 1 1
  • 1.抽象類 由來:利用抽象類為了更好的對類進行分類。如同不同的具體植物有不同的名字承绸,但都可以統(tǒng)稱為植物裸影,“植物”這...
    Sun灬2019閱讀 388評論 0 0
  • 想必大家對Java中的實體類都比較熟悉轩猩。實體類通過屬性和方法去描述一系列相似對象的特征。例如我們要寫一個程序去計算...
    lulu_6c14閱讀 737評論 0 0
  • 抽象方法: 在所有的普通方法上面都會有一個“{}”,這個表示方法體摩幔,有方法體的方法一定可以被對象直接使用彤委。 而抽象...
    呱呱_閱讀 30,623評論 4 7