Java打印对象,封装

时间:2013-08-25 08:10:31

标签: java class object hash encapsulation

我需要使用封装打印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));

谢谢!

2 个答案:

答案 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"    
       }

    }