我需要使用封装打印3个变量,而且我无法修改主类。
主类声明变量[柱面,制作,所有者],并希望使用以下参数创建和打印对象:
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));
谢谢!
答案 0 :(得分:4)
您需要覆盖toString
方法:
在Vehicle
课程中写下此方法:
public String toString(){
return var4+", "+ var2+ " cylinders, "+"owned by "+ var5;
}
请注意,变量var4
等是您的班级Vehicle
中定义的变量。
答案 1 :(得分: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"
}
}