2013-08-25 188 views
0

我需要使用封裝來打印3個變量,並且我無法修改主類。Java打印對象,封裝

主類聲明變量[缸,使,所有者]並希望創建和使用的參數,例如打印的對象:

System.out.println (new Vehicle (cylinders, make, owner)); //create Vehicle object 

目的,應該採取的變量並打印出一個簡單的句子。

現在,我的代碼「作品」:

import java.util.*; 
public class Vehicle{ 
int var; 
int var2; 
double var3; 
String var4; 
String var5; 
String tots; 

public Vehicle (int cylinders, String make,String owner){ 
var2=cylinders; 
var4=make; 
var5=owner; 
System.out.println(var4+", "+ var2+ " cylinders, "+"owned by "+ var5); 
} 
} 

它打印在主程序中的句子,但它打印時,後打印一個奇怪的值,「車輛@ 3d434234」,這似乎是類名後跟某種哈希/十六進制值。

如果我拿出我的print語句

System.out.println(var4+", "+ var2+ " cylinders, "+"owned by "+ var5); 

然後,它會直接返回「車輛@ 3d434234」

我怎麼能阻止它從印刷類的哈希值,

請注意我無法修改

System.out.println (new Vehicle (cylinders, make, owner)); 

謝謝!

+1

覆蓋'toString'在'Vehicle'類方法。 –

+0

爲自己節省很多麻煩,養成爲字段和變量選擇描述性名稱的習慣。使用'var','var2'等名稱實在是一個糟糕的主意。 –

回答

4

你需要重寫toString方法是:

寫這個方法在你Vehicle類:

public String toString(){ 

return var4+", "+ var2+ " cylinders, "+"owned by "+ var5; 
} 

注意,變量var4,等在你Vehicle類中定義的變量。

+0

謝謝!它似乎現在工作:), 通常做一個toString更好嗎? – gunter

+1

@gunter - 僅當您想要打印對象的有意義的表示形式時。這對調試通常很有用(直到你學會使用調試器)。 –

+0

是的,只要你打算打印你的對象,如果'toString'沒有被覆蓋,你會看到這種類型的字符串'Vehicle @ 3d434234' – Abubakkar

0

您需要爲其要使用字符串表示法打印對象的類重寫toString方法。

class Name{ 
     private String name; 

     public Name(String name){ 
     this.name=name; 
     } 


     public String toString(){ 
      return this.name; 
     } 
     public static void main(String args[]){ 
      System.out.println(new Name("yourname")) //output "yourname"  
     } 

    }