認識抽象類別
● 抽象方法o 未定義實作的方法, 則為抽象方法
● 抽象類別o 用來定義類別到某種程度,而未定義的方法成員由繼承之子類別各自實
作表現o 表現出多型的特徵o 就是定義不完整的類別, 所以無法建構出物件實體
● abstract
認識抽象類別
Shape
calculateArea()display90
Rectangle Circle Triangle
抽象類別之應用
public abstract class MyShape { abstract double calculateArea(); void display(){};}class circle extends MyShape { double calculateArea(){return 0;}
}
介面的意義與定義
在一般生活事物上, 可以用物件來看待所有具體的東西. 但是, 有些事物有方法特徵, 而其所有實作方式卻各有不同. 舉例:● Java認證程式設計師● 考過OCJP即可● 方法實作各有不同: 腳踏實地,背考古題...● 我是人”類”的物件實體,而我有實作OCJP
介面的意義與定義
有一個類別SuperProgramer, 實做了Java認證程式設計師, 與Linux LPIC.
Java認證程式設計師
Linux LPIC
OCJP
LPIC 101
LPIC 102
Super Programer
介面的意義與定義
public interface JavaProgramer {void OCJP();
}public interface LinuxLPIC {
void LPIC_101();void LPIC_102();
}
介面的意義與定義
● 宣告為interface● 所有方法皆有定義無實作● 所有方法皆為抽象方法, 但是不需要再宣告為abstract● 所有方法存取權限皆為public, 但是不需要再宣告為public
Package的基本觀念
簡單來說, 就是將所有的類別或是介面進行分類.● 分門別類● 進而延伸存取權限
Package的基本觀念
● java.lang● 路徑● 網域名稱倒過來 + 自定分類● 在Eclipse上的專案實做
存取修飾字
● publico 全部可以存取使用
● protectedo 繼承之子類別o 相同 package
o 相同 package● private
o 自己本身類別
import使用觀念
● java.lang● 在宣告類別定義之前● import [類別層級];● 程式中用到的時候再做 import; 否則會增加編譯時間, 但
是不影響後來產生的.class
static import● import static● 針對 static member
Object class● 物件型別的轉換
o 自動轉型o 強制轉型
● 物件的比較方式● 雜湊碼的應用● 物件的複製● 物件轉換字串
內部類別
● 方便存取外部類別的成員● 通常是為外部類別所設計的專用類別物件● 以外部類別的成員看待之● 存取修飾字為
o publico protectedo 無o private
包裹類別
● 與基本型別呼應的物件型別● Auto-boxing● Auto-unboxing
包裹類別
Object
Number
Byte Short Integer Long Float Double
Character Boolean
Auto-boxing
int i = 100;
int iu = ib.intValue();
WrappingInteger ib = new Integer(i);
Unwrapping
物件在記憶體中的觀念
● 物件所指向的記憶體位置不再參考● 物件結束生命週期● 自動資源回收機制
物件的生命範圍
JAVA Object Life Cycle
Created In use Invisible Unreachable Collected Finalized Deallocated
資源回收機制
a=3
b=4
a=1
b=2
HEAP
S2
S1
資源回收機制
呼叫GC的方式● System.gc()● Runtime.getRuntime().gc()
finalize 方法的使用