假设我有一个超类Person
和子类,Employee
我想先创建一个person
类,然后将其用作要放入employee
类的构造函数中的参数。
例如Public Empolyee
(Person person....)(这会在编译期间产生构造函数未找到错误)
我的案例场景是我有一个Person
尚未实例化为员工的对象,后来我想用它来实例化一个Employee
对象,我想传递这个人的变量。
那么我该怎么做呢?另外请解释是否应该这样做。
假设我有一个超类Person
和子类,Employee
我想先创建一个person
类,然后将其用作要放入employee
类的构造函数中的参数。
例如Public Empolyee
(Person person....)(这会在编译期间产生构造函数未找到错误)
我的案例场景是我有一个Person
尚未实例化为员工的对象,后来我想用它来实例化一个Employee
对象,我想传递这个人的变量。
那么我该怎么做呢?另外请解释是否应该这样做。
由于继承关系,您可以通过 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。
尝试这个:
//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);
}
我在这里看不到您的继承逻辑正确。
你已经有答案了..见下文
class person()
class employee extends person(here)
因此你可以访问它的变量和方法..
只是好奇为什么您需要实例化员工并注入已经是员工父级的人员类。
您的 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
}
它会完美地工作。
Child
class 自动获取所有public, protected
成员的访问权限,parent
并且child
还具有对parent
class 的引用。
为什么要将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;
}
}