本文目錄一覽:
Java抽象類是什麼概念?
JAVA的抽象類其實和她的普通類在表示實現概念的東西沒多大區別,不要因她帶有抽象這個形容詞就覺得比她的普通類理解起來複雜.
個人的理解是
所謂的抽象類呢,就是帶有抽象方法的類.
所謂的抽象方法就像是一種寫代碼的規範.
抽象方法沒有方法體
抽象方法可以有參數列表
抽象方法用abstract修飾
抽象方法的訪問修飾分別為 public、protected、default(預設 不用寫)
加深了解抽象類
/*理解JAVA抽象類
* 1.抽象類不能被實例化.
* 2.抽象類有構造器,且他的構造在他的子類被實例化時被調用的順序和普通類調用的順序是一樣的(先父後子).
* 3.抽象類內部的方法可以不是抽象方法,也就是說抽象類內部可以有具體的方法.
* 4.抽象類的抽象方法屬於一種不完整的方法,只含有聲明和定義,沒有方法主體.
* 5.如果抽象的某個子類是普通類(非abstract類型的類),那麼該子類必須Override抽象類中所有的抽象方法.
* 6.抽象類的子類也是抽象類的話,那麼該子類既可以Override父類中的方法,也可以不Override父類中的方法.
* 7.普通類中不能定義抽象方法.
* 8.static不能修飾抽象方法
* 備註:為了方便理解,所謂的普通是指如下形式定義的類
* public class X{} 或 class A XX{}
* */
java抽象類
抽象類是指不允許被實例化的類;抽象方法是沒有方法體的方法。
1、抽象類可以不包括抽象方法,它反正不會去實例化,裡面的方法是不是抽象的沒有本質影響。
2、但是含有抽象方法的類絕不能被實例化,否則執行這個方法的時候,怎麼辦?
3、如果子類是非抽象的,那麼它就必須實現父類中的抽象方法;否則,它繼承來的抽象方法仍然沒有方法體,也是個抽象方法,此時就與「含有抽象方法的類必須是抽象類」相矛盾了。
比如說,我在紙上畫一個餅(抽象類),餅有個「吃到嘴裡沾一嘴芝麻」的方法。我可以在餅上畫幾個點假裝是芝麻,這時候「沾芝麻方法」就是個抽象方法,因為它不會真的掉芝麻;我也可以在餅上蘸點兒真芝麻,這時候「沾芝麻方法」就是個有實現的方法。但是用哪個方法都可以,因為沒人會去真的吃畫的餅吧。
但我要真的去照著這個圖烤一個餅(非抽象子類),那這個子類的「吃到嘴裡沾一嘴芝麻」的方法就必須有具體的實現。否則烤出來,一吃,沒芝麻啊!食客非上消協投訴不可。
java中的抽象類和具體類的差別在那裡?
1、抽象類不能直接實例化,並且對抽象類使用
new
運算符是編譯時錯誤。雖然一些變數和值在編譯時的類型可以是抽象的,但是這樣的變數和值必須或者為
null,或者含有對非抽象類的實例的引用(此非抽象類是從抽象類派生的)。
2、允許(但不要求)抽象類包含抽象成員。
3、抽象類不能被密封。
當從抽象類派生非抽象類時,這些非抽象類必須具體實現所繼承的所有抽象成員,從而重寫那些抽象成員。
java抽象類?
抽象類是不允許被實例化, 僅僅是限制抽象類不能創建自己的實例, 僅僅只是限定了不允許出現new A();方式創建一個 A 類的實例
並沒有限制 類型 A 的引用不可以指向任何 A 的直接或間接子類的具體實例的
父類型引用指向一個子類型的實例這是允許的,這就是里氏代換原則的描述
原創文章,作者:OWKS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145003.html