已创建超类的Java继承

时间:2013-10-24 07:57:11

标签: java inheritance

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

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

My Case场景是我有一个Person对象尚未实例化为员工,后来我想用它来实例化一个Employee对象,我想通过这个人的变数结束了。

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

5 个答案:

答案 0 :(得分: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);

同样构造函数不会返回任何内容,因此请删除问题中的空白。

答案 1 :(得分:0)

Child类会自动获取public, protected的所有parent成员的访问权限,而child也会引用parent类。

为什么要将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;
    }
}

答案 2 :(得分:0)

我没有正确地看到你的继承逻辑。

你已经回答了......见下文

class person()


class employee extends person(here)

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

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

答案 3 :(得分:0)

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

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

它会完美运作。

答案 4 :(得分: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);
}