---
# System prepended metadata

title: '**[java物件導向程式語言筆記]**'

---

# **[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 助教提供の筆記
``

















