---------------------------------------------------------
(一)程式結構
---------------------------------------------------------
(一)程式結構:
1.Java是物件導向語言,類別中會有兩種成員分別為屬性(attribute)與方法(method),兩者成員描述這個類別擁有甚麼狀態及能做甚麼事情,
下為一個完整的Java程式結構與對應名稱:
class Cat
{
類別屬性、物件屬性
類別方法(){ ... }、物件方法(){ ... }、建構子()
}
(1)建構子也是一種方法;在方法內所宣告的變數稱之為區域變數,變數只能在這個區域使用,區域為{ }範圍內。例如,下面Cat類別中的Run()方法,裡面有一個變數名稱為km,型態為int,值為10。
class Cat
{
Run(){
int km = 10;
}
}
(2)類別成員若加入static會變成專屬該類別所有的屬性與方法,也就是類別成員(static member)。沒加上static就是物件成員(non-static/instance member)。
(3)建構子(constructor)是屬於物件成員,不可加上static修飾元。
(4)程式進入點,基本的Java程式碼都從main()方法這開始:
public static void main(String[] args) { }
2.
(1)區域變數:在方法或建構子裡面所定義的變數稱之為區域變數,區域變數的生命週期僅存於這個方法,方法一旦執行完畢,區域變數就自動歸還給系統,區域變數不可加上static。
可以利用” . ”運算子讓我們存取到該類別的成員。
à範例如下,兩個類別,分別為PetStore及Puppy,PetStore這類別從main開始執行,三個區域變數dogName、dogKind、dogColor存取另一個類別Puppy的類別成員,屬性:
public class PetStore{
public static void main(String[] args){
String dogName = Puppy.name;
String dogKind = Puppy.type;
String dogColor = Puppy.color;
System.out.println("我有一隻聰明的" +dogKind +
"犬, 名叫" +dogName + ", 它的顏色是" + dogColor + "色的");
System.out.print("他每天都會幫我");
Puppy.skill();
}
}
//這是一個寵物的類別
public class Puppy{
//寵物名稱變數
public static String name = "小黃";
//寵物品種變數
public static String type = "拉不拉多";
//寵物的外觀色澤變數
public static String color = "米黃";
//寵物的特殊才藝1方式
public static void skill(){
System.out.println("拿報紙與開電視");
}
}
(2)具有回傳值的方法:void屬於無回傳值的方法,若要在方法中設計有回傳值,則必須於方法中定義回傳值的資料型態,Java語法中不可以設計同時具有回傳值和void的方法。
à依序上面兩個類別,新增一個方法。public static String skill2() { }
public class PetStore{
public static void main(String[] args){
String dogName = Puppy.name;
String dogKind = Puppy.type;
String dogColor = Puppy.color;
System.out.println("我有一隻聰明的" +dogKind +
"犬, 名叫" +dogName + ", 它的顏色是" + dogColor + "色的");
System.out.print("他每天都會幫我");
Puppy.skill();
String dogskill = Puppy.skill2();
System.out.println(dogskill);
}
}
//這是一個寵物的類別
public class Puppy{
//寵物名稱變數
public static String name = "小黃";
//寵物品種變數
public static String type = "拉不拉多";
//寵物的外觀色澤變數
public static String color = "米黃";
//寵物的特殊才藝1方式
public static void skill(){
System.out.println("拿報紙與開電視");
}
/**寵物的特殊才藝2方式*/
public static String skill2(){
String skill = "翻書及拿物品";
return skill;
}
}
(3)何時使用return關鍵字:在具有回傳值方法中,最後都必須使用reutrn關鍵字,再加上法定回傳值回傳給呼叫端,void方法原則上是不用此關鍵字,不過若想要在void方法中使用,必須在return後面緊接著加上;,如return;,表示無回傳值。
3.註解:註解會執行程式時,忽略被註解的程式。建議平時養成寫註解習慣,並且利用文件註解標記來製作成是說明書,以利日後自己或他人使用、查詢或維護。
(1)文件註記:/** 註解文字 */。撰寫好之後,利用:Javadoc –verbose –private XXX.java(會產生一堆檔案)
(2)單行註解: //。
(3)多行註解:/*…*/。
(二)package與import:
1.package與java程式檔實際存放的位置息息相關,例如package pet.water 表示該套件所有的類別必須存放於 …\pet\water目錄之下,以便編譯器(javac.exe)在執行編譯時能將所產生的class檔放到指定路徑下。
2.可利用下列方式存取class:
a.完整路徑,套件名.類別名àwater\Fish.java、PetStore.java(不同資料夾)
b.透過import來定義:import water.*; 或是import water.完整檔名;
3.為何.java檔案中可以直接使用System類別,以及該類別所提供的成員?
在java程式規範中,預設會將java.lang.*,就是基礎類別函式庫(已經寫好的類別函式庫,名為Java 2 platform packages)會自動import進來,被封裝在
C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar
4.import會影響效能嗎?不會,Java編譯器提供聰明的機制,編譯器只會import程式碼中有用到的類別。
(三)存取修飾元(Modifier):用來宣告類別、屬性與方法(含建構子)可被存取的權限。
分四個等級:
1.private:同一個class才可存取
2.default:同一個package的class才可存取
3.protected:同一個package的class才可存取,不同package的要有繼承關係才可存取。
4.public:皆可存取。
類別(class)只能使用public與default,若是內部類別,上述四種皆可定義使用,屬性與方法也可使用。
留言
張貼留言