[英]Java printing an object, encapsulation
我需要使用封裝打印3個變量,並且無法修改主類。
主類聲明變量[cylinders,make,owner],並想要創建和打印具有如下參數的對象:
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 );
}
}
它在主程序中打印該語句,但是在打印時,它在“ Vehicle @ 3d434234”之后打印一個奇怪的值,該值似乎是類名,后跟某種哈希/十六進制值。
如果我拿出打印報表
System.out.println(var4+", "+ var2+ " cylinders, "+"owned by "+ var5 );
然后它將僅返回“ Vehicle @ 3d434234”
如何停止打印類的哈希值,
請記住,我無法修改
System.out.println (new Vehicle (cylinders, make, owner));
謝謝!
您需要為其覆蓋toString
方法:
在您的Vehicle
類中編寫以下方法:
public String toString(){
return var4+", "+ var2+ " cylinders, "+"owned by "+ var5;
}
請注意,變量var4
等是在Vehicle
類中定義的變量。
您需要為要以String表示法打印其對象的類重寫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"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.