Java类引用数据类型

时间:2017-07-01 18:33:06

标签: java

public class Name{
    public String firstname;
    public String lastname;
}
public class Info{
    public Name name;
    public int age;
}
public class test{
public static void main(String[] args){
   Info v = new Info();
   v.age=12;
   System.out.println();
 }
}

我正在尝试使用测试类中的age,firstname和lastname创建一个对象v。我已经将年龄初始化为v.age = 12,但是如何在测试类中初始化firstname和lastname?

3 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。这样:

v.name = new Name();
v.name.firstname = "John";
v.name.lastname = "Smith";

或者这个:

Name n = new Name();
n.firstname = "John";
n.lastname = "Smith";
v.name = n;

答案 1 :(得分:0)

你可以这样做:

public static void main(String[] args){
  Info v = new Info();
  v.age=12;
  v.name = new Name();
  v.name.firstname = "Joe";
  v.name.lastname = "Smith";
  System.out.println();
}

答案 2 :(得分:0)

年龄和名称字段不应是公共变量。它们应该是私有的,并且应该通过参数设置到构造函数。然后你会有getters来检索它们的值,以及允许仅在受控环境中设置值的setter。例如,

public class Info{
   private Name name;
   private int age;

   public Info( String firstname, String lastname, int a ) {
      age = a;
      name = new Name(firstname, lastname);
   }

   public Info( Name n, int a ) {
      age = a;
      name = n;
   }

   int getAge() {
      return age;
   }

   Name getName() {
      return name;
   }
}

然后你的main()会以两种方式之一创建Info实例:

   Info info = new Info("Joe", "Smith", 12 );

   Name name = new Name("Bill", "Smith");
   Info info2 = new Info( name, );