Java********

Download Report

Transcript Java********

Java物件導向
程式設計
1
2
類別與物件關鍵字



封裝類別 public, private, static , final
物件繼承 extends, super, instanceof
抽象類別 abstract
 介面



interface, implements
列舉 enum
建立物件 new
套件 package, import
3
物件內容關鍵字


封裝 public, private, static, protected,
唯讀 final
 又稱為讓一個欄位、變數成為immutable

原生方法 native
 用來讓java可以使用C/C++的函式的機制,一些
Java中擴充與系統溝通的功能都用native實現,
請參考Java Native Interface


同步方法 synchronized
禁止快取修飾 volatile
4
錯誤例外處理關鍵字

throws
throw, try, catch, finally

Exception類別

 處理一個在設計上無法考慮的問題:使用者、外在
因素
5
基本型別




整數 byte, int, short, long,
字元字串 char, String
浮點數 float, double
邏輯值 boolean
 布林值(邏輯相關)

無型別 void(用於方法宣告)
 基礎型別

true, false
Object
無物件 null
6
外覆的基礎型別(Wrapped)
 由於基本原生型別並非Object體系的物件,
Java定義以下的包覆類別來滿足萬物皆為物件
的特性





整數
Byte, Integer, Short, Long
字元
Char
浮點數 Float, Double
布林 Boolean
無回傳型別 Void
7
流程與迴圈

條件判斷 if, else
 分支
switch, case, default, break
 迴圈 for, while, do-while, continue, break
8
基本語法-定義類別
 定義類別
class 類別名稱 {
}
舉例:
class MyClass {
}
9
10
基本語法-定義欄位


宣告欄位(屬性)
一個屬性就像描述一個器具的規格或內容物
Ex: 一個簡單的2D捲軸遊戲的遊戲角色,如冒險島的玩
家,他應該有血量,座標,分數
class Player{
public int healthPoint, lifeCnt; //血量,殘機量
public int stage,xAxis,yAxis; //關卡座標
public int score; //分數
public boolean isAlive; //是否還活著的狀態
}


附註:所有定義在class上的欄位在建立時都是被初始化
為0
11
基本語法-定義欄位

1.
2.
3.
4.
5.

定義欄位時的格式需要依照
存取修飾子(public, private, protected)
欄位修飾子(static, volatile, final)
型別
名稱
Ex: public final int value = 1;
Java在欄位跟方法加上static的意思是這個變數或方法會在物件
生成之前存在。也就是說他的生命週期、等級與類別相同。
class SomeClass{
public static int seriesVersionNo = -1;
}
存取時可以直接利用類別名稱存取,如 SomeClass.seriesVersionNo
12
基本語法-定義欄位






值得注意的是,當欄位修飾為final時,代表該欄位具有不可修改
的特性,也就是常數。當欄位為常數時,必須給予一個初始化數
值。
Ex: public final int ZERO = 0;
final可以用在修飾class,interface,欄位,方法,區域變數
修飾class時代表class為葉子類別(Leave Class),不允許被繼承
修飾欄位時代表欄位為唯讀、常數,不允許被改寫
修飾Object體系的欄位時代表該參照本身不能參考其他物件




final Object finalObj = null;
Object obj2;
finalObj = obj2; //這行不被允許
修飾方法時代表方法是獨一無二的方法,在類別體系中不允許繼
承複寫,但允許多載。
13
基本語法-定義欄位
public class DemoStatic{
public static String hello = “Hello World”;
public static void main(String[] argv){
System.out.println(DemoStatic.hello);
}
}
14
基本語法-定義方法


定義方法
一個方法是一個函式,用來包涵一組動作或者用來取得狀
態
class Player{
public int healthPoint; //血量
public int getHP(){ //取得血量
return this.healthPoint;
}
public void setHP(int hp){//設定血量
this.healthPoint = hp;
}
}

get與set的方法也稱為Getter跟Setter,用來存取某欄位
15
基本語法-建構子
 建構子(Constructor)

建構子是一個物件生出來時第一個啟動的方法,
用來初始化一個物件。
 如:創新角色

穿新手裝,拿木棍
 建構子沒有回傳值
 建構子可以接受多個參數
16
基本語法-建構子
class Player{
public Player(){
//將欄位設定為初始狀態
}
public Player(int HP, int lifeCnt){
this.healthPoint = HP;
this.lifeCnt = lifeCnt;
this.isAlive = true;
}
}
17
基本語法-建構子

建構子可以叫用方法來幫助初始化
class Player{
private void init(int HP, int lifeCnt,boolean isAlive){
this.healthPoint = HP;
this.lifeCnt = lifeCnt;
this.isAlive = isAlive;
}
public Player(){
this.init(100,3,true);
}
public Player(int HP, int lifeCnt){
this.init(HP,lifeCnt,true);
}
}
18
基本語法-建構子


從類別(Class)實體化一個物件(Object)
類別與物件的關係如同

模子與成果


EX:雙胞胎像同一個模子出來的(and so to Korean)
語法:

類別 物件名稱 = new 類別();
// 血量100, 3個生命的Player
Player player1 = new Player();
// 血量999, 999個生命的Player
Player player2 = new Player(999,999);
19
基本語法-建構子
20
基本語法-存取與封裝
 在類別內的方法,包括靜態方法,可以存取物
件的私有變數
 其他類別只能存取自己的公開方法
 同一個套件內的類別可以存取套件欄位與公開
欄位

不加上任何可見度修飾子(public, protected,
private)的,就是套件欄位
21
22
23
基本語法-存取與封裝