将对象作为构造函数的参数传递

时间:2013-12-26 11:13:00

标签: java constructor

我有3节课。这些类是Class1,Parent和Child。我在弄清楚如何编写我的Child类所需的构造函数时遇到了一些麻烦。

public Class1
{
    private String firstName;
    private String lastName;

    public Class1()
    {
    firstName="";
    lastName="";
    }

    public Class1(String firstName, String lastName)
    {
    this.firstName=firstName;
    this.lastName=lastName;
    }

    //Methods and stuff
}

public Parent
{
    private Class1 class1;
    private double number;

    public Parent();
    {
    class1=new Class1();
    number=0;
    }

    public Parent(Class1 c, double n)
    {
    Class1=c;
    number=n;
    }

//Methods and stuff
}

public Child extends Parent
{
    private String string;
    private Boolean boolean;

    public Child(Class1 class1, double n, String s, Boolean b)
    {
    //Don't know how to get the Class1 part to work
    //Don't know how to get the double to work
    string=s;
    boolean=b;

//Methods and stuff
} 

我不知道如何编写代码,以便我可以让我的构造函数接受这样的参数:

new Child(new Class1("String", "String"), 10, "String", true);

我希望这有助于澄清我的问题。

2 个答案:

答案 0 :(得分:1)

Child构造函数创建为

public Child(Class1 objClass1, double number, string str, boolean bool){
    super(objClass1,number);
    this.str=str;
    this.bool=bool;
}

Parent构造函数创建为

public Parent(Class1 objClass1, double number){
    this.objClass1=objClass1;
    this.number=number;
}

您可以将子构造函数称为

Child objChild=new Child(new Class1(str1,str2),number,str,bool);

答案 1 :(得分:0)

我不打算给你代码,因为你没有给我们足够的信息,但我们假设你有类似的类结构。

 public class Parent
 {
     private String field;

     public Parent(String field) {
         this.field = field;
     }
 }

 public class Child extends Parent {
     private String field;

     public Child(String field)
     {
         this.field = field;
     }
 }

您可以做的是在Child类中指定一个构造函数,该构造函数将继承链中的变量传递给Parent类:

public Child(String field, String parentField)
{
     super(parentField); // Calls the parent class.
     this(field);
}

那么你在那里所做的就是将parentField传递给Parent类,并调用现有的构造函数来接受一个String参数。

将此原则应用于您的代码,您将在几分钟内得到它。