---
# System prepended metadata

title: 9/2 K速記

---

# 9/2 K速記

* 修飾詞

|  | private | default | protected | public |
| -------- | -------- | -------- |-------- |-------- |
| 同一個類            | O    | O     | O | O |
| 同一個package      |      | O      |O  | O  |
| 不同package的子類	 |      |      | O | O |
| 不同package的非子類 |      |      |  | O |


1. 函式 = 拉出重複行為
2. 類別 = 拉出重複行為 且 伴隨重複的方法
3. 繼承 = 

* 繼承 - (java 只有 ***單一繼承***)
	* 子類別
		* 將父類別所公開(public)的屬性及方法(複製給子類別)，直接可調用 
	* 建構子
		* 子類別 包含 父類別的建構子 及 子類別的建構子，父類別會先被執行 無參數建構子
		* 若 父類別都需要參數的建構子 則子類別 建構子 需要呼叫 super(1); 以進行父類別 帶參數建構子的呼叫。
		* java 所有的類別 都繼承 java.lang.Object
	* override(覆寫)
		* 子類別建立方法 但與父類別同名 且參數相同，則在子類別呼叫會使用子類別方法，稱為override
		* @Override 符號 作為標示

* 多形
	* 父類別 = 子類別; ，可以由子類別取出完整的父類別，但可能遺失子類別專屬的屬性與方法
	* 取得父類別後，可存取父類別的private數及方法
	* 父類別 = 不同子類別  => 可以變成不同的實體，在執行時期 才決定型態
	* 搭配override 則可切換子類別的 ***方法*** 內容
	* 子類別 = 父類別; 一般無法使用 後續有強制轉型方式。

* toString() 任何類別 都有這個方法 作為列印時 使用
```java=
Square s = new Square(3);
System.out.println(s);//使用object的toString方法 內部呼叫
System.out.println(s.toString());

```
可以使用override更改toString()方法，作為列印物件時的特別方式。