{%hackmd @ZZRT/CSS %}
# <span class="block"> Lesson 0 </span>
---
## Java 簡介
----
**性質**
- 高階語言
- 編譯語言
- 物件導向
- 跨平台
----
## **Java** vs **Javascript**
他們的關係大概和**牛**和**牛蒡** **馬**和**馬拉松**差不多
除了名字以外的東西都差滿多的xD
不要搞混哦...
----
這明明就是Javascript的寫法..

---
## 甚麼是物件導向?
What is OOP?
----
### 寫程式實質上就是在==操作資料==
----
## **資料**
----
### 這裡有些資料 他們看起來雜亂無章

----
### 整理一下

----
### 再整理一下

----
### 這其實就是物件和類別

----
What is OOP?
----
## 類別
像是藍圖,上面寫著製作物件的方法(還有操作的方法)
## 物件
是一群資料(記憶體)的集合
物件都是獨一無二的
----
## 基礎型別
| 型別 | 舉例 |
| -------- | -------- |
| char | `'c'` |
| float | `8.129` |
| int | `8129` |
| boolean | `true` |
他們不是物件 ==物件都是獨一無二的==
```java
int a = 1;
int b = 1;
a == b; // true
```
----
Why OOP?
- **易於維護、擴充**
- **提高可讀性**
- **減少重複的程式**
- 有許多以物件導向為基礎的設計模式讓開發更快速
---
物件導向4要素: 封裝、繼承、多型、抽象
----
# 封裝
----
其實我們已經使用了第一個原則: 封裝
封裝是甚麼呢?
----
### 封裝物件的操作方法
有了車子卻不知道要怎麼開?
寫在藍圖裡,一目了然

----
### 封裝複雜的操作方法
Driver只要知道怎麼往前開,不用知道設置每個馬達的速度的方法

----
## 封裝資料
改變速度前經過檢查,太快會翻車

----
關於 繼承、多型、抽象,以後會有更詳細的說明
{"metaMigratedAt":"2023-06-16T20:41:42.990Z","metaMigratedFrom":"YAML","title":"Lesson 0","breaks":true,"slideOptions":"{\"transition\":\"fade\",\"parallaxBackgroundSize\":\"2100px 1000px\",\"defaultTiming\":120}","contributors":"[{\"id\":\"a41c05df-55bf-44dc-9b5f-6e53858b0a77\",\"add\":3462,\"del\":1415},{\"id\":\"35809032-c270-45a6-adab-a7e7a63da25b\",\"add\":5229,\"del\":5557}]"}