類別名稱 物件名稱 = new 建構子
舉例:
MyClass obj = new MyClass();
MyClass() : 是 建構子 ( Constructor) ,而 建構子名稱一定與類別名稱相同。
上述程式包含兩個動作,一個是宣告,一個是產生物件。如下動作:
MyClass obj; // 宣告物件名稱為 obj
obj = new MyClass(); //呼叫類別建構子,配置物件記憶體空間,並設定物件指向 記憶體位置
---------------------------------------------------- 範例程式開始 ----------------------------------------------
public class Object1{
public static void main(String[] args){
System.out.println(" 標題="+MyObj.title); // 四星
//System.out.println(" 尺寸="+MyObj.size); // 錯誤程式碼 , MyObj 的 int size要 加 static:靜態,表可為類別的所有物件共享
MyObj a = new MyObj();
MyObj b = new MyObj();
a.color=" 紅色"; //修改a 物件的顏色屬性
a.title=" 翠谷"; //修改a 物件的標題屬性
b.size=20; //修改b 物件的尺寸屬性
System.out.println("a 物件的顏色="+a.color); //紅色 a.color=" 紅色";
System.out.println("b 物件的顏色="+b.color); //白色 MyObj(){color=" 白色";}
System.out.println("a 物件的尺寸="+a.size); //10 MyObj(){size=10;}
System.out.println("b 物件的尺寸="+b.size); //20 b.size=20;
System.out.println("b 物件的標題="+b.title); //翠谷 a.title=" 翠谷"; a 改掉title
System.out.println("myObj 類別的標題="+MyObj.title); //翠谷
}
}
class MyObj
{
String color; //顏色屬性
int size=20; //尺寸屬性
static String title=" 四星"; //標題屬性,此一屬性宣告為靜態
MyObj() //建構子:與類別相同、不加修飾語、沒有回傳值
{
color=" 白色";
size=10;
}
}
--------------------------------------------------------- 程式輸出 ----------------------------------------------
E:\test>java Object1
標題= 四星
a 物件的顏色= 紅色
b 物件的顏色= 白色
a 物件的尺寸=10
b 物件的尺寸=20
b 物件的標題= 翠谷
myObj 類別的標題= 翠谷
--------------------------------------------- 另一個範例程式開始 ----------------------------------------------
public static void main(String[] args){
System.out.println("=================程式開始=================");
System.out.println("MyObj.title="+MyObj.title);
System.out.println("MyObj.size="+MyObj.size);
System.out.println("MyObj.color="+MyObj.color);
System.out.println("=========MyObj a = new MyObj();=================");
System.out.println("=========MyObj b = new MyObj();=================");
MyObj a = new MyObj();
MyObj b = new MyObj();
System.out.println("MyObj.title="+MyObj.title);
System.out.println("MyObj.size="+MyObj.size);
System.out.println("MyObj.color="+MyObj.color);
System.out.println("a.title="+a.title);
System.out.println("a.size="+a.size);
System.out.println("a.color="+a.color);
System.out.println("b.title="+b.title);
System.out.println("b.size="+b.size);
System.out.println("b.color="+b.color);
System.out.println("=================a.title=翠谷; =================");
System.out.println("=================b.size=20; ====================");
System.out.println("=================a.color=紅色;=================");
a.title=" 翠谷"; //修改a 物件的標題屬性
b.size=10; //修改b 物件的尺寸屬性
a.color=" 紅色"; //修改a 物件的顏色屬性
System.out.println("MyObj.title="+MyObj.title);
System.out.println("MyObj.size="+MyObj.size);
System.out.println("MyObj.color="+MyObj.color);
System.out.println("a.title="+a.title);
System.out.println("a.size="+a.size);
System.out.println("a.color="+a.color);
System.out.println("b.title="+b.title);
System.out.println("b.size="+b.size);
System.out.println("b.color="+b.color);
}
}
class MyObj{
static String title=" 四星"; //標題屬性,此一屬性宣告為靜態
static int size=20; //尺寸屬性
static String color; //顏色屬性
MyObj() //建構子:與類別相同、不加修飾語(=friendly:只能被位於同一個package 裡的類別成員來存取)、沒有回傳值
{
title="ABC";
size=30;
color=" 白色";
}
}
--------------------------------------------------------- 程式輸出 ----------------------------------------------
E:\test>java Object12
=================程式開始=================
MyObj.title= 四星
MyObj.size=20
MyObj.color=null
=================MyObj a = new MyObj();=================
=================MyObj b = new MyObj();=================
MyObj.title=ABC
MyObj.size=30
MyObj.color= 白色
a.title=ABC
a.size=30
a.color= 白色
b.title=ABC
b.size=30
b.color= 白色
=================a.title=翠谷; =================
=================b.size=20; =======================
=================a.color=紅色;=================
MyObj.title= 翠谷
MyObj.size=10
MyObj.color= 紅色
a.title= 翠谷
a.size=10
a.color= 紅色
b.title =翠谷
b.size=10
b.color= 紅色
沒有留言:
張貼留言