Java_03:進階物件導向觀念

32
進階物件導向觀念

Transcript of Java_03:進階物件導向觀念

進階物件導向觀念

認識抽象類別

● 抽象方法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 方法的使用

實際演練操作