# **[java物件導向程式語言筆記]** `author ` ` @tingting` ## <font color="#1A8EA8">CHAPTER1類別與物件</font> ### ![question](https://i.imgur.com/3cs8Abu.png =30x)物件導向是甚麼挖割?類別Class與物件又是甚麼? ``` 1. 當遇到較複雜的系統時,利用物件導向概念來去coding,優點在於"物件",以不同概念用類別表達, 減少重複的程式碼,系統也較好維護。 2. "類別"是由使用者自行定義的資料型別,而"物件"則是類別宣告出來的變數。 easy to say--{類別:定義程式的方法、屬性。 EX.房子的設計藍圖 --{物件:可執行的東西。EX.實際蓋好的房子 ``` #### <font color="#DE614B">一. 類別Class?</font> * 先有類別才有物件 * 「檔名」需與「Class名稱」相同 <font color="9F9F9F">-->ex.Hello.java的Class開頭是「public class Hello」</font> * 類別(Class)包含一個或多個方法(method) <font color="9F9F9F">-->ex.Score類別可以「顯示成績、加分、扣分」(方法)</font> * 類別(Class)包含一個或多個屬性,存放在「實體變數」中 <font color="9F9F9F">-->ex.Score類別把chineseGrade屬性存放在名為「chinese_score」變數中,後續可以讀取或增減</font> * 方法(Method)是類別(Class)的功能 * 方法(Method)可再呼叫方法(Method) #### <font color="#DE614B">二. 宣告方式?</font> * 宣告方法 method格式: <font color="#7762A6">**屬性 回傳值 方法名稱(傳入的參數){.......}**</font> ``` public void add(int addScore){ chinese_score = chinese_score + addScore; } #"void"不用回傳值 ``` ``` public String get_grade(){ return studentScore } #要有回傳值否則為null ``` * 宣告屬性:調用的權限?  * public:所有人 * protected:同一個Package都可以 * private:只有自己 * 表格:![important](https://i.imgur.com/EvJW9fS.png =80x) | 屬性 | 本Class | 同Package | 外Package | |:---------:|:-------:|:---------:|:---------:| | public | V | V | V | | protected | V | V | X | | private | V | X | X | #### <font color="#DE614B">三. 文字輸入?</font> ``` import java.util.Scanner; ****** public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); ****** String message = scan.nextLine(); ****** System.out.println(message); } } ******特別的地方 ``` * 須引入「java.util.Scanner」(通常IDE會自動幫我們輸入) * 宣告Scanner: * <font color="#D03635">Scanner scan = new Scanner(System.in);</font> 意思是要先在Class上複製一份屬性是「系統輸入(System.in)」的Scanner。 * 抓取輸入文字: * 透過「scan.nextLine()」呼叫「Scanner類別」底下的「nextLine 方法」 --- ### 剩下的資料在此連結,請按下圖↓ [![](https://i.imgur.com/JgUQCEw.png =300x)](https://hackmd.io/@Rpd7nN7rSMePKZnLH4i2Gw/HyQiCQMzO#%E4%B8%80%E3%80%81%E9%A1%9E%E5%88%A5-Class) `` 感謝 @SWind 助教提供の筆記 ``