【本節目标】
通過閱讀本節,你将了解到使用匿名對象時記憶體發生的變化,學會直接使用構造函數生成匿名對象便捷地滿足一次性調用需求以及各類資料的靈活傳遞調用。
6.1 匿名對象
經過分析可以發現,利用構造方法可以傳遞屬性資料,于是現在進一步分析對象的産生格式:
定義對象的名稱:類名稱 對象名稱 = null;
執行個體化對象:對象名稱 =new 類名稱()。
如果這時隻通過執行個體化對象來進行類的操作也是可以的,而這種形式的對象由于沒有名字就稱為叫它匿名對象。
範例:觀察匿名對象
class Person{ //定義一個類
private String name ; //人員的姓名
private int age ; //人員的年齡
//方法名稱與類名稱相同,并且無傳回值定義
public Person (String n, int a) { //定義有參構造
name = n ; //為類中的屬性指派(初始化)
age = a ; //為類中的屬性指派(初始化)
}
public void tell() {
System.out.println(“姓名:”+ name +”、年齡:”+age) ;
}
public void setName(String n){
name = n ;
}
public void setAge(int a){
age = a ;
}
public String getName(){
return name ;
}
public int getAge (){
return age;
}
}
public class JavaDemo { //主類
public static void main(String args[]) {
new Person(“張三”, 10).tell() ; //進行方法的調用
}
}

圖一 執行結果一
此時依然通過了對象進行了類中tell()方法的調用,但是由于此對象沒有任何的引用名稱,是以該對象使用一次之後就将成為垃圾,而所有的垃圾将被GC進行回收與釋放。
現在發現此時程式中已經存在有構造方法了,那麼下面通過一個程式來利用構造方法進行一次記憶體分析。
範例:編寫一個分析程式
class Message{
private String title ;
public Message(String t){
title = t ;
}
public String getTitle(){
return title;
}
public void setTitle( String t){ //具有修改功能
title = t ;
}
}
class Person{ //定義一個類
private String name ; //人員的姓名
private int age ; //人員的年齡
public Person (Message msg, int a) { //定義有參構造
name = msg.getTitle() ; //為類中的屬性指派(初始化)
age = a ; //為類中的屬性指派(初始化)
}
public Message getInfo(){
return new Message(name + “:” + age)
}
public void tell() {
System.out.println(“姓名:”+ name +”、年齡:”+age) ;
}
}
public class JavaDemo { //主類
public static void main(String args[]) {
Message msg = new Message(“mldn”)
Person per =new Person(msg , 20);
msg = per.getInfo() ;
System.out.println(msg.getTitle());
}
}
圖二 執行結果二
通過此程式進行一個簡短的記憶體分析。
圖三 記憶體分析結果
隻要是方法都可以傳遞任意的資料類型(基本資料類型、引用資料類型)。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:揭開this的神秘面紗-屬性篇 | 帶你學《Java面向對象程式設計》之七 更多Java面向對象程式設計文章檢視此處