子類中所有的建構函式預設都會訪問父類中空引數的建構函式。
因為每乙個建構函式的第一行都有一條預設的語句super();。
子類會具備父類中的資料,所以要先明確父類是如何對這些資料初始化的。
為什麼子類例項化的時候要訪問父類中的建構函式呢?
那是因為子類繼承了父類,獲取到了父類中內容(屬性),所以在使用父類內容之前,要先看父類是如何對自己的內容進行初始化的。
class fu
void show()
}class zi extends fu
void show()
}class extenddemo
}
總結:
乙個物件例項化過程,以person p = new person();為例:
1、jvm會讀取指定的路徑下的person.class檔案,並載入進記憶體,並會先載入person的父類(如果有直接的父類的情況下)。
2、在記憶體中開闢空間,並分配位址。
3、並在物件空間中,對物件的屬性進行預設初始化。
4、呼叫對應的建構函式進行初始化。
5、在建構函式中,第一行會先到呼叫父類中建構函式進行初始化。
6、父類初始化完畢後,再對子類的屬性進行顯示初始化。
7、再進行子類建構函式的特定初始化。
8、初始化完畢後,將位址值賦值給引用變數。
class fu}
class zi extends fu }
class finaldemo
}
final可以修飾類,方法,變數。
final修飾的類不可以被繼承。
final修飾的方法不可以被覆蓋。
final修飾的變數是乙個常量,只能被賦值一次
抽象類中是否有建構函式?
答:有,用於給子類物件進行初始化。
抽象關鍵字abstract不可以和哪些關鍵字共存?
答:private、static、final。
抽象類中可不可以沒有抽象方法?
答:可以,但是很少見。目的就是不讓該類建立物件,awt的介面卡物件就是這種類。通常這個類中的方法有方法體,但是卻沒有內容。
抽象類和一般類的區別?
答:相同點:
抽象類和一般類都是用來描述事物的,都在內部定義了成員。
不同點:
①一般類有足夠的資訊描述事物。
抽象類描述事物的資訊有可能不足。
②一般類中不能定義抽象方法,只能定義非抽象方法。
抽象類中可定義抽象方法,同時也可以定義非抽象方法。
③一般類可以被例項化。
抽象類不可以被例項化。
抽象類一定是個父類嗎?
答:是的,因為需要子類覆蓋其方法後才可以對子類例項化
當乙個抽象類中的方法都是抽象的時候,這時可以將該抽象類用另一種形式定義和表示,就是介面。
格式:inte***ce {}
介面中的成員修飾符是固定的:
成員常量:public static final
成員函式:public abstract
由此得出結論,介面中的成員都是公共的許可權。
介面是對外暴露的規則。
介面是程式的功能擴充套件。
inte***ce demo
class demoimpl implements /*實現*/demo
public void show2(){} }
class inte***cedemo
}
注意:
①雖然抽象類中的全域性變數和抽象方法的修飾符都可以不用寫,但是這樣閱讀性很差。所以,最好寫上。
②類與類之間是繼承關係,類與介面直接是實現關係。
③介面不可以例項化,只能由實現了介面的子類並覆蓋了介面中所有的抽象方法後,該子類才可以例項化。否則,這個子類就是乙個抽象類。
學習第九天
怎麼沒有題面?我怎麼知道?換個鏈結吧!向洛谷勢力低頭 我們畫一下這個小螞蟻走出來的圖形,我們就會發現,是乙個類似長城的形狀 這個題,求最大值,我們應該能很容易想到用動態規劃 那麼對於乙個路徑圍成的圖形,我們需要描述的是它的位置和形狀,所以這顯然是個高維的dp 位置很好描述,但是形狀太複雜了,我們怎麼...
python學習 第九天
在下這廂有禮了 爬蟲簡單實現 coding utf 8 import urllib def gethtml url page urllib.urlopen url html page.read returnhtml html gethtml print html l urllib 模組提供了讀取we...
第九天學習日誌
學習日誌 蘇嵌專案實訓 姓名 梁軒齊 日期 2018.7.12 今日學習任務 行列式鍵盤輸入及led顯示 今日任務完成情況 基本完成,但除錯不出來 今日中發現問題彙總 寫 很吃力,基本框架可以寫出,但是,除錯不出來。今日未解決問題 除錯不出 今日開發收穫 學會了程式設計過程中的一些思路,可以進行一些...