SlideShare a Scribd company logo
1 of 32
Download to read offline
進階物件導向觀念
認識抽象類別
● 抽象方法
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上的專案實做
實作教學演練
存取修飾字
● public
o 全部可以存取使用
● protected
o 繼承之子類別
o 相同 package
o 相同 package
● private
o 自己本身類別
import使用觀念
● java.lang
● 在宣告類別定義之前
● import [類別層級];
● 程式中用到的時候再做 import; 否則會增加編譯時間, 但
是不影響後來產生的.class
實作教學演練
實作教學演練
static import
● import static
● 針對 static member
實作教學演練
Object class
● 物件型別的轉換
o 自動轉型
o 強制轉型
● 物件的比較方式
● 雜湊碼的應用
● 物件的複製
● 物件轉換字串
實際演練操作
內部類別
● 方便存取外部類別的成員
● 通常是為外部類別所設計的專用類別物件
● 以外部類別的成員看待之
● 存取修飾字為
o public
o protected
o 無
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();
Wrapping
Integer 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
HEA
P
S2
S1
資源回收機制
呼叫GC的方式
● System.gc()
● Runtime.getRuntime().gc()
finalize 方法的使用
實際演練操作

More Related Content

Viewers also liked

第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班力中 柯
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)力中 柯
 
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架力中 柯
 
Java8 time
Java8 timeJava8 time
Java8 timekoji lin
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Kuo-Chun Su
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!鍾誠 陳鍾誠
 

Viewers also liked (8)

第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)
 
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架
 
Java8 time
Java8 timeJava8 time
Java8 time
 
Java_08:SQL
Java_08:SQLJava_08:SQL
Java_08:SQL
 
沒有 GUI 的 Git
沒有 GUI 的 Git沒有 GUI 的 Git
沒有 GUI 的 Git
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
 

Java_03:進階物件導向觀念