---
# System prepended metadata

title: 整理周筆記8/31 ~ 9/4

---

# 整理周筆記8/31 ~ 9/4




編譯時期
java -->  java.compiler  ---> class檔案

執行時期
class檔案(讓各大程式都能讀取的) --->  JVM(JAVA虛擬機，來執行)

執行時期字串跟編譯時期的字串
會是不同的記憶體位置


編譯時期的字串 若是同樣內容 會被指到同個記憶體位置
(都會被放在字串池，例如  你輸入100個1 都會被放在同個位置
 如果編譯時期串起來  將字串"1"+"2";  跟字串"12" 記憶體位置也會相同
)


執行時期 即便內容相同，但是不會是同個記憶體位置
(因為他不知道你執行時期 輸入什麼 所以會新創記憶體位置)
要比較內容 "值" 是否相同 要用.equal();


.方法()  有小括號是方法 沒有就不是
arr.length 是變數


查一下，正則表示式


多載  會考

何謂 屬名 

判別時參考三個事情 函式名稱 參數各數 及參數的順序 
白話就是 小括號裡面()來決定
public static void abc(){  // 就是小括號這個

}

length()
split()
substring()
contains()
replace()
equals()
compareTo()





從類別角度去看
一個類別(Class 裡面只有 方法跟屬性)
屬性 即是 基本資料型態
方法是 後面有帶小括號的


```java=
public void abc(){


}

```
其他都不會寫在class裡面



一個類別裡面的 函式 叫方法

一個類別裡面 屬性 叫狀態

class裡面有
建構子 也是一個方法(函式)
一定跟類別同名 大小寫一樣




假設你不寫 建構子 他會自己預設一個
public class名字(){
    
}




## 物件導向8/26 使用觀念方式

從外部主程式只操控 圖書館
所以要一個實體物件 new圖書館後產生


思考方向
以下類別

圖書館
書櫃
書
書的日期







* 修飾詞

|  | 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()方法，作為列印物件時的特別方式。



override注意事項
子類別繼承父類別，封裝等級 及 回傳屬性部分，
回傳屬性 只能向下 如: Animal 類別 可使用為 Animal(原本的 父類別) or Cat /Dog(Animal的子類別)等  
封裝等級，







