当前位置: 首页 > article >正文

学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方法在父类中,不过都是子类的对象可以使用的。


http://www.kler.cn/a/565957.html

相关文章:

  • PyQT(PySide)的上下文菜单策略设置setContextMenuPolicy()
  • 天佐.崆峒印 异常崩溃检测分析
  • 【和鲸社区获奖作品】内容平台数据分析报告
  • 力扣-动态规划-198 打家劫舍
  • Kettle 连接 Oracle 数据库全流程指南
  • 【leetcode hot 100 438】找到字符串中所有字母异位词
  • JavaScript 垃圾回收与内存泄漏:原理与应对策略
  • Vue 3 路由管理实战:构建多页面博客导航 - 掌握 Vue Router 实现 SPA 页面跳转
  • 物理内存组织与分配的核心概念
  • tidb集群基于多副本容灾
  • DS32编译优化问题【deepseek的功劳】
  • Spring MVC 的执行流程
  • Python基于Django和人脸识别的在线票务系统设计与实现
  • 【Docker】Linux部署web版Firefox
  • 【AIGC系列】4:Stable Diffusion应用实践和代码分析
  • DeepSeek开源周Day4:三连发!突破 AI 训练瓶颈的立体解决方案,并行计算三剑客DualPipe、EPLB与Profile-data
  • 【Java学习】内部类
  • python-leetcode-第 N 个泰波那契数
  • Debian系统关闭休眠模式
  • 2025年2月28日全球科技信息差:技术革新、市场震荡与认知重构