Java第九天學習筆記 繼承 抽象類 介面

2021-09-02 03:28:10 字數 1913 閱讀 5461

子類中所有的建構函式預設都會訪問父類中空引數的建構函式。

因為每乙個建構函式的第一行都有一條預設的語句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顯示 今日任務完成情況 基本完成,但除錯不出來 今日中發現問題彙總 寫 很吃力,基本框架可以寫出,但是,除錯不出來。今日未解決問題 除錯不出 今日開發收穫 學會了程式設計過程中的一些思路,可以進行一些...