Java Flashcards
(23 cards)
Overloading
。為功能類似的方法提供相同的方法名稱時,Java會自動依據
1.參數的數量及
2.不同資料型別,自動呼叫對應方式
。無法根據回傳值型態不同而區別
物件
●屬性 (attribute) 或稱為特徵 (Characteristics)
●行為 (behavior) 或稱為操作 (Operation)
※Java透過類別(class)實現物件的概念,讓程式設計師能更具體化與直覺的方式進行資料處理
類別
●資料成員 (Data Member → 變數 Variable)
●方法成員 (Method Member → 方法 Method)
※類別是物件的資料型態(type),一個物件是由某類別產生的一個實體(instance)
●只有 public & default & final & abstract Modifier
物件參考變數(Object Reference Variable)
是一個儲存物件 在記憶體中位址 的 變數
Code:
Pen myPen = new Pen(); // myPen is Obj. Ref Var.
實體變數(Instance variables)
●宣告在方法之外,類別之內,且沒有static 修飾子
●實體變數可被類別內任何非static方法存取
●又稱 member variables(成員變數),attribute variables(屬性變數)
●實體變數在宣告時,Java 會自動給予初始值,不可以在宣告後又再指定初始值,編譯會錯誤
EX:String brand;
brand = “SKB” ; // ERROR
傳值 Pass by value
如果傳入的參數為基本資料型別時,在方法內對參數的改變將不影響原來方法外的值。
傳址 Pass by reference
如果傳入的參數為物件參考變數或陣列時,可更動reference 對象原變數的值,也可使用reference 對象的方法與變數
陣列 Array
●陣列是由一群相同資料型態的變數所組成的一總資料結構 ●必須用 new 關鍵字來分配陣列的儲存空間 ○所以,陣列也是 一種 Reference 資料型態 ○陣列的指定運算也是傳遞陣列的 記憶體位址(memory address) ○在 new 宣告同時 必須指定長度且不可更改
取陣列長度:
陣列名稱.length
- 一維陣列為元素個數
- 二維陣列為列數
字串 String
●String 物件的特性 。不可變的(immutable)字串: 。String s1 = new String(“Hello”); 有自己的獨立記憶體空間(Heap Memory) 。String s1 = “Hello”; 為了加快程式執行,Java會把此類字串放在字串池(String pool)裡
public
●Visible to the world
●所有類別皆能存取
●在不同package中,需在class 前 import 欲想使用的 變數、方法等所屬的package
protected
●Visible to the package and all subclasses
●同套件底下類別或所有其子類別都可以存取
default
●Visible to the package
●同套件底下的類別皆可存取
private
●Visible to the class only
方法裡 區域變數(Local Variable)
●方法變數(Local Variable)不能使用存取修飾子,因為沒有意義
●Local Variable 沒有任何 Modifier,也不是 default。他已經由所屬方法決定其Modifier
建構子(Constructor)
●建構子名稱需與類別名稱相同
●建構子沒有回傳型態和回傳值,加了回傳值即成為一般方法
●必須使用 new 關鍵字呼叫建構子而產生物件,並同時初始化物件的成員變數
覆載建構子(Overloading Constructor)
●可以藉由this 關鍵字呼叫同類別底下的另一個建構子
●建構子第一行(第一個敘述(statement))只要有this(…),則進行呼叫其他建構子。this(…)也只能放在第一句。
static Modifier
●實體變數和方法若是宣告為 static,則此變數和方法即成為類別變數(或稱靜態變數)和類別方法(或稱靜態方法)
●宣告為static的變數和方法,不是由任何此類別的物件單獨擁有,而是由屬於此類別的所有物件共同擁有
●當類別 (.class_file) 第一次被載入JVM時,在任何實體被建構之前,靜態的變數與方法就會先被載入
。static方法不可使用this
。static方法不可被覆寫(override)為非static方法
。宣告為靜態static方法, 不可以存取該類別中non-static的變數和方法, 只可以存取該類別中static的變數和方法
。宣告為non-static的方法, 可以存取該類別中non-static的變數和方法, 也可以存取該類別中static的變數和方法
繼承 (Inheritance )
●一個類別可以繼承它的父類別所有狀態及行為,我們即把此稱之為 子類別(subclass)延伸(extends)自父類別(superclass)
●子類別將會繼承到父類別中所有可以存取的成員,包括變數與方法
●子類別繼承父類別功能之後:
。還可以再加入新方法 (method)
。也可以覆寫(override)從父類別而來的方法,
●class SubClassName extends SuperClassName
注意:
。Java不支援多重繼承,一個子類別只能extends一個父類別(但在interface可實現)
。建構子(Constructor)無法被繼承,因為每個class都有屬於自己的一個或多個Constructor
。java.lang.Object類別為所有類別的共同父類別
覆寫 Overriding
●子類別宣告覆寫(overriding)方法時, 方法名稱、 參數個數、參數型別與回傳值皆須跟父類別裡被覆寫的方法相同
●存取修飾子的等級不可以小於原方法
●子類別覆寫(override)父類別的方法時,其存取控制(access control)的範圍不可小於原方法(指的是可以相同或是開放等級更高)
final Modifier
●一個類別宣告為final,表示這個類別不能被繼承
public final class String {…}
public final class Math {…}
●一個方法宣告為final,表示這個方法不能被覆寫(Override)
●一個變數宣告為final,表示這個變數在初始值化後,不得再變更其值,也就是常數(Constant)
●一個物件參考變數宣告為final,表示這個變數在初始值化後,不得再指向另一個物件
抽象 Abstract
●抽象方法沒有方法主體,且必須加上abstract修飾子
●抽象類別不一定要有抽象方法,但具有抽象方法的類別,一定要宣告為抽象類別
●一個類別只要加上abstract修飾子(即使它裡面不含任何abstract方法),它就無法產生實體,只能透過繼承來建立延伸子類別
介面 Interface
1.多重繼承
。class 子類別 extends 父類別 implements 介面1, 介面2, … {…}
。class 子類別 implements 介面1, 介面2, … {…}
2.預先定義規格給實作此介面的所有子類別
。介面可說是一種所有方法皆為抽象方法的抽象類別
- 貼標籤
- 型態轉換
- 降低相依性
- 宣告之變數 Modifier=> public static final
- 宣告之方法 Modifier=>public abstract