<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">在这里我将说明java中的继承体系中的一个很重要的知识点,其实这个知识点困惑了我好久了,希望大家不要走我这条弯路,希望大家看了我的代码能够对java中的继承有深刻的了解</span>
1、建立了一个 抽象的Company类:
package override;
public abstract class Company {
private String name;
private int age;
private double money;
public Company(String name, int age, double money) {
this.name = name;
this.age = age;
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public abstract void job();
}
2、建立实现Company接口的实现类员工类Employee
package override;
public class Empolyee extends Company {
public Empolyee(String name, int age, double money) {
super(name, age, money);
// TODO Auto-generated constructor stub
}
@Override
public void job() {
// TODO Auto-generated method stub
System.out.println(this.getName()+".."+super.getAge()+"..."+getMoney());//在这里我主要探讨的是这里是写this还是super?这个问题深深的困惑着我!
}
}
3、建立一个测试类:
package override;
public class CompanyDemo {
public static void main(String[] args) {
Company c=new Empolyee("lisi", 12, 1500);
c.job();
}
}
运行结果:
lisi..12...1500.0
对于上述的结果我的疑问主要是在下面的这行
System.out.println(this.getName()+".."+super.getAge()+"..."+getMoney());//在这里我主要探讨的是这里是写this还是super?这个问题深深的困惑着
到底是this还是super呢?我们来分析一下继承关系!compan抽象类中定义了private的name,age,money,当employee类继承了company的时候实际上empoyee并没有继承private的name,age,money,但是由于父类中有带有参数的构造方法,因此需要在子类employee中super父类的构造方法(这里不是继承,因为构造方法是不能被继承的)
Company c=new Empolyee("lisi", 12, 1500);
当执行这句话的时候 这三个参数到底传递给了谁呢?因为子类中没有继承过来父类的私有属性,因此这里的参数实际上是调用子类的构造方法,而子类中的构造方法中又有super.Company的构造方法,因此这里的参数是传递给了父类。因此填写super可以理解
当是this的时候,因为父类中有get set方法 是public的 因此子类中也应该继承了父类的get set方法,因此在子类中也是有get set方法的,使用this的话实际上也是调用父类的