2017年11月1日 星期三

Day1-1 - Java OO 名詞

程式由object構成,object間藉由method互相溝通。
每個object都具有type, type又由a. class 及 b. interface定義。
而Java就是使用一群不同class的object。

class - 描述此type的object支援的state & behavior
object - 在runtime時,JVM遇到new關鍵字時,會使用適當的class來製造object,這個object就是此class的instance。這個object會有自己的state,且可以執行此class定義的behavior。
state (instance variables) - 每個object (class的instance),會擁有自己唯一的一組instance variable,這組被指派給object的instance variable就稱為此object的state。
behavior(method) - method就是class儲存邏輯的地方,也是執行algorithm和處理資料的地方。

Identifier & Keyword

在Java元件裡,class、variable、method都需要名子,這個名字就叫做Identifier。且class、variable、method都有命名的conventions。且需要注意的是,名字不能與keywords(關鍵字)相同。

Inheritance

可以定義一個抽象化的superclass,再擴充它成為subclass。subclass也可以存取定義在superclass的instance variable和method,但也可以自由override superclass的method來定義更具體的行為。
比如圖形superclass可以定義所有形狀的一般函式,但圓形這個subclass可以覆寫setRadius()這個函數。

Interfaces

Interface像是一個abstract superclass,他只需要定義需要的method,但不需要定義其內容。比如圖形這個Interface宣告圖形的class都需要時做setRadius() method,但這個Interface不需要提供任何setRadius()如何實作。只有當setRadius()被呼叫的時候,在定義他要如何實作其宇宙不同的行為。

Cohesive

不應該讓一個class專注多個責任。比如一個class同時擁有圖形和車子的行為。
Java將多個class組織成packages,並使用import讓developer命名及存取所需的packages。

2 則留言: