2015年6月22日 星期一

2 Java程式概要

2     Java程式概要

    Java程式是由類別或其集合所構成,也就是說一支Java程式至少有一個類別,但大多數程式會由多個類別所組成。下面說明類別意義:
類別
Java程式就是類別或其集合。
類別是Java的基本單位。
類別是一群具有完整功能的程式碼。
類別可單獨成為一支程式(),或可聯合多個類別成為一支程式()
類別如同一種設計文件,必須製造成實體之後才可使用,即建立物件。主類別則屬於靜態(static)類別,不需建立物件即可執行。
類別包含兩種元素:欄位(field)及方法(method),欄位或稱為資料、變數,方法或稱為操作、函式。
[主類別及一般類別]
一支Java程式如果只包含一個類別必定是主類別,有別於主類別者可稱為一般類別。凡是含主方法(名稱為main之方法)之類別稱為主類別,可單獨執行。一般類別不含主方法,不可單獨執行,必須透過主類別建立其物件,並呼叫其方法執行。
[類別的成員]
類別成員包含欄位及方法。
[欄位field]
欄位為程式執行時存放資料的地方,有各種型態,如整數、浮點數等。
[方法method]
方法為程式進行進行運算及操作(如列印、顯示)的地方。
[類別例:主類別]
計算兩數yz之和x,並顯示於命令列。
class Disp1 {                             //以關鍵字class宣告類別Disp1
  public static void main(String[] args) {      //方法(函式)宣告,本例為主方法
  int x, y, z;                             //整數欄位xyz宣告
  y = 10;                               //指定運算
  z = 15;                               //指定運算
  x = y + z;                             //加法及指定運算
  System.out.println("x的值是" + x);        //呼叫系統內建類別的方法(函式)
  }                                    //()方法結束
}                                      //()類別結束
如果程式原始碼至於Cjs資料夾下
命令提示字元下輸入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+…..)
n1n2n3可為文字(需置於“  ”)或變數或計算式(需置於())或方法(有回傳值)等。
+號為連接之意。



物件
如果將類別視為藍圖,則物件即為依據藍圖所建築的房子,或所造的機器等,可造出複數個。藍圖可視為不占空間,但房子、機器等則占有龐大空間,如前述,類別(主類別除外)建立物件,並分配記憶體給欄位後方可使用。一個類別可建立多個物件,並各自配置有記憶體,不會互相干擾。

[物件例]
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保留為系統使用,有其特殊意義,不得用於類別、物件、欄位等名稱。如下列:
abstractcaseclassconstdefaultdoelseextendsfalsefinal
friendimplementsinterfacenativeprivateprotectedpublicreturn
shiftstaticsupersynchronizedthisthrowthrowstruetryvirtual
voidvolatile



[命令提示字元使用方式]
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

沒有留言:

張貼留言