学Java第二十九天-----继承中的构造方法和this、super关键字
上一节的总结:
一、继承中的构造方法的访问特点
1.super()
用在子类的无参构造方法的第一行,执行后,会先执行父类的无参构造,再执行子类的无参构造
最后执行测试类后,输出:父类的无参构造
子类的无参构造
2.super(参数)
用在子类的有参构造方法的第一行,执行后,会先执行父类的有参构造,再执行子类的有参构造
测试类加一句:sout(s.name+","+s.age); 最后输出的是 "zhangsan+23"
3.总结
二、this、super的使用总结
如何用this访问构造方法:
一般用在JavaBean类的某个成员变量需要有默认值。
Student s=new Student(); ---------->>>>>调用无参构造方法-------成员变量有0,null值
Student s=new Student("zhangsan",23,"清华大学"); ---------->>>>>调用有参构造方法-----给成员变量赋值
三、代码练习
1.Employee-------父类
把经理和厨师的共同成员变量抽取到员工这个父类中
package com.itheima.exe7;
public class Employee {
private String id;
private String name;
private double salary;
public Employee() {
}
public Employee(String id, String name, double salary) {
this.id = id;
this.name = name;
this.salary = salary;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public void work(){
System.out.println("员工在工作");
}
public void eat(){
System.out.println("员工在吃米饭");
}
}
2.Manager-----------子类1
package com.itheima.exe7;
public class Manager extends Employee {
private double bonus;
public Manager() {
}
public Manager(String id, String name, double salary, double bonus) {
super(id, name, salary);
this.bonus = bonus;
}
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
@Override
public void work(){
System.out.println("管理员在管理人");
}
}
3.Cook----------子类2
package com.itheima.exe7;
public class Cook extends Employee {
public Cook() {
}
public Cook(String id, String name, double salary) {
super(id, name, salary);
}
@Override
public void work(){
System.out.println("厨师在炒菜");
}
}
4.测试类
package com.itheima.exe7;
public class Test {
public static void main(String[] args) {
Manager m=new Manager("heima001","张三",15000,8000);
System.out.println(m.getId()+","+m.getName()+","+m.getSalary()+","+m.getBonus());
m.work();
m.eat();
Cook c=new Cook();
c.setId("heima002");
c.setName("lisi");
c.setSalary(10000);
System.out.println(c.getId()+","+c.getName()+","+c.getSalary());
c.work();
c.eat();
}
}
当一个类有父类的时候,父类的成员变量就会继承给子类,所以就可以把父类的成员变量当成自己的成员变量,只不过成员变量的定义和get/set方法在父类中,不过都是子类的对象可以使用的。