-2

假设我有一个超类Person和子类,Employee 我想先创建一个person类,然后将其用作要放入employee类的构造函数中的参数。

例如Public Empolyee(Person person....)(这会在编译期间产生构造函数未找到错误)

我的案例场景是我有一个Person尚未实例化为员工的对象,后来我想用它来实例化一个Employee对象,我想传递这个人的变量。

那么我该怎么做呢?另外请解释是否应该这样做。

4

5 回答 5

2

由于继承关系,您可以通过 Employee 类直接访问所有 Person 类成员。您不需要将父对象传递给子对象。

将所有必要的参数传递给 Employee 并从其构造函数调用 super()。

//Person constructor
Person(param1, param2){
}

class Employee extends Person
//Employee constructor
Employee(param1, param2){
super(param1, param2);
}

// New object
Employee emp = new Employee(param1, param2);

构造函数也不返回任何内容,因此请删除问题中的 void。

于 2013-10-24T07:59:17.690 回答
0

尝试这个:

//if your Person constructor looks like this
public Person(param1, param2){
}


//then your copy constructor would look like this
public Employee(Person p){
   super(p.getParam1 p.getParam2);
}
于 2013-10-24T08:22:00.197 回答
0

我在这里看不到您的继承逻辑正确。

你已经有答案了..见下文

class person()


class employee extends person(here)

因此你可以访问它的变量和方法..

只是好奇为什么您需要实例化员工并注入已经是员工父级的人员类。

于 2013-10-24T08:04:23.557 回答
0

您的 Employee 将作为一个人工作。您可以通过 Employee 对象调用 Person 的每个方法或变量(私有变量和方法除外)。但是,如果您仍然想将 Person 对象传递给 Employee 类的构造函数,那么您可以将其作为 fallows-

  public Employee(Person person,.......){
      super();//or pass required parameters according to constructor of Person class
         //do whatever you want
   }

它会完美地工作。

于 2013-10-24T08:11:19.890 回答
0

Childclass 自动获取所有public, protected成员的访问权限,parent并且child还具有对parentclass 的引用。

为什么要将parent类引用传递给Child类。相反,您可以像这样parent从类中调用类构造函数child

public Child(){
super()
}

根据下面的问题,我们可以这样做:

public class Child1 extends Super1 {
    private int l;
    public Child1(Super1 s){
        super(s);
    }
    public Child1(){
        this.l=20;
    }
}

public class Super1 {
    private int k;
    public Super1(){

    }
    public Super1(Super1 s){
        k=s.k;
    }
}
于 2013-10-24T08:02:29.427 回答