2 Java程式概要
Java程式是由類別或其集合所構成,也就是說一支Java程式至少有一個類別,但大多數程式會由多個類別所組成。下面說明類別意義:
【類別】
Java程式就是類別或其集合。
類別是Java的基本單位。
類別是一群具有完整功能的程式碼。
類別可單獨成為一支程式(檔),或可聯合多個類別成為一支程式(檔)。
類別如同一種設計文件,必須製造成實體之後才可使用,即建立物件。主類別則屬於靜態(static)類別,不需建立物件即可執行。
類別包含兩種元素:欄位(field)及方法(method),欄位或稱為資料、變數,方法或稱為操作、函式。
[主類別及一般類別]
一支Java程式如果只包含一個類別必定是主類別,有別於主類別者可稱為一般類別。凡是含主方法(名稱為main之方法)之類別稱為主類別,可單獨執行。一般類別不含主方法,不可單獨執行,必須透過主類別建立其物件,並呼叫其方法執行。
[類別的成員]
類別成員包含欄位及方法。
[欄位field]
欄位為程式執行時存放資料的地方,有各種型態,如整數、浮點數等。
[方法method]
方法為程式進行進行運算及操作(如列印、顯示)的地方。
[類別例:主類別]
計算兩數y、z之和x,並顯示於命令列。
class Disp1 { //以關鍵字class宣告類別Disp1
public
static void main(String[] args) { //方法(函式)宣告,本例為主方法
int x, y,
z; //整數欄位x、y、z宣告
y =
10; //指定運算
z =
15; //指定運算
x = y +
z; //加法及指定運算
System.out.println("x的值是"
+ x); //呼叫系統內建類別的方法(函式)
} //(主)方法結束
} //(主)類別結束
如果程式原始碼至於C槽js資料夾下
命令提示字元下輸入:C:\js>java
Disp1
執行結果:x的值是25
[類別例-一般類別]
class Disp2 { //以關鍵字class宣告類別Disp2
int m =
11, n = 12; //欄位宣告並指定其值(指定運算)
void dispMethod2() {
//方法宣告,本例為一般方法
System.out.println("m+n="+ (m+n)); //呼叫系統內建類別的方法(函式)
} //(一般)方法結束
} //(一般)類別結束
一般類別不可單獨執行。
[類別例-主類別+一般類別]
class Disp3g {
int m =
15, n = 22; //欄位宣告並指定其值(指定運算)
void dispMethod3() {
//(一般)方法宣告
System.out.println("m+n=" + (m+n)); //呼叫系統內建類別的方法(函式)
}
}
class MainDisp3m {
public
static void main(String[] args) { //方法(函式)宣告
Disp3g dd
= new Disp3g(); //建立類別Disp3g之物件dd
dd.m =
27; //物件欄位運算
dd.n =
12; //物件欄位運算
dd.dispMethod3(); //呼叫物件方法
}
}
命令提示字元下輸入:C:\js>java
MainDisp3m
執行結果:m+n=39
註解行說明:
//開始直到行末為註解行,編譯器將不視為程式碼。
/*
*/圍住範圍為註解行,可跨行,編譯器亦不視為程式碼。
內建類別System的方法System.out.println(顯示列印後跳行)及System.out.print(顯示列印後不跳行):
格式:
System.out.println(n1+n2+n3+…..)
n1、n2、n3可為文字(需置於“ ”內)或變數或計算式(需置於()內)或方法(有回傳值)等。
+號為連接之意。
【物件】
如果將類別視為藍圖,則物件即為依據藍圖所建築的房子,或所造的機器等,可造出複數個。藍圖可視為不占空間,但房子、機器等則占有龐大空間,如前述,類別(主類別除外)建立物件,並分配記憶體給欄位後方可使用。一個類別可建立多個物件,並各自配置有記憶體,不會互相干擾。
[物件例]
class Obj1 {
int m =
15, n = 22;
void objMethod1()
{
System.out.println("m+n=" + (m+n));
}
}
class MainObj1 {
public
static void main(String[] args) {
Obj1 xx =
new Obj1(); //建立類別Obj1之物件xx
Obj1 yy =
new Obj1(); //建立類別Obj1之物件yy
xx.m =
27; //物件欄位運算
yy.m = 30;
xx.n =
12; //物件欄位運算
xx.objMethod1(); //呼叫xx物件方法
yy.objMethod1(); //呼叫yy物件方法
}
}
命令提示字元下輸入:C:\js>java
mainObj1
執行結果:m+n=39
m+n=52
[建立物件格式]
類別 物件名稱 = new 類別([建構子參數列])
例:Obj1 xx = new Obj1(); //建立類別Obj1的物件xx,沒有建構子參數
【靜態(static)類別、非靜態(non-static)類別】
主類別因具static方法,為靜態類別,不需建立物件即可執行,其他非靜態類別則須建立物件才可執行。靜態方法內之欄位(資料)為靜態欄位,說明見後述。
【繼承】
類別是Java程式的基本單位,繼承則是Java程式最重要的功能。類別可透過繼承擴充或改變功能,被繼承之類別稱為父類別,繼承的類別稱為子類別。父類別及子類別皆可分別建立一個或多個物件。繼承使用extends關鍵字。
[繼承例]
class
Father1 {
int x = 7;
char y = 'a';
void fatherMethod1( ) {
System.out.println(y + "=" + x) ; } }
class
Son1 extends Father1 { } //單純繼承(不改變父類別)
class
Son2 extends Father1 { //繼承並變更功能
void fatherMethod1() {
System.out.println("Son2 x=" + x
+ " y=" + y); } }
class
Son3 extends Father1 { //繼承並增加功能,原欄位及方法仍保留
int z = 100; //新增欄位z
void fatherMethod2() { //新增方法fatherMethod2
System.out.println("Son3 x=" + x
+ " y=" + y + " z=" + z); } }
class
MainExtends1 {
public static void main(String[ ] args)
{
Father1 A = new Father1( ) ;
A.fatherMethod1();
Son1 B = new Son1();
B.fatherMethod1();
Son2
C = new Son2();
C.fatherMethod1();
Son3 D = new Son3();
D.fatherMethod1();
D.fatherMethod2(); } }
命令提示字元下輸入:C:\js>java MainExtends1
執行結果:a=7
a=7
Son2 x=7 y=a
a=7
Son3 x=7 y=a
z=100
【關鍵字或稱保留字】
關鍵字為Java保留為系統使用,有其特殊意義,不得用於類別、物件、欄位等名稱。如下列:
abstract、case、class、const、default、do、else、extends、false、final、
friend、implements、interface、native、private、protected、public、return、
shift、static、super、synchronized、this、throw、throws、true、try、virtual、
void、volatile。
[命令提示字元使用方式]
Java原始碼可以記事本編輯,儲存時副檔名指定為.java,經命令提示字元畫面輸入編譯指令javac編譯,成為副檔名.class之位元檔後,即可用java命令執行。
進入:開始功能表->所有程式->附屬應用程式->命令提示字元
C:\Users\CTC-Mobile> (各人顯示皆不同)
切換至java程式原始碼所在資料夾(cd命令,料夾為C:\js)
C:\Users\CTC-Mobile>cd
C:\js
編譯:輸入java程式編譯指令javac,原始碼須指定副檔名.java
C:\js>javac
Disp1.java
執行:輸入java程式執行指令java,位元碼不須指定副檔名.class
C:\js>java
Disp1
x的值是25
沒有留言:
張貼留言