栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习-Java继承和多态之super关键字(10)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习-Java继承和多态之super关键字(10)

任务描述

本关任务:根据要求补全 Salary 类,实现输出员工基本信息和薪水的功能。

相关知识

对于继承父类的子类而言,有时我们需要在子类中访问父类的方法,此时便可以使用 super 关键字。

在 Java 里面,对于 super 关键字的用法:

    子父类存在着同名的成员(包括变量和方法)时,在子类中默认是访问子类的成员,可以通过 super 关键字指定访问父类的成员;

    创建子类对象时,默认会先调用父类无参的构造方法,可以通过 super 关键字指定调用父类的构造方法。

    如果在子类的构造方法上没有指定调用父类的构造方法,那么 Java 编译器会在子类的构造方法内加上 super() 语句;super 关键字调用父类的构造函数时,该语句必须要是子类构造函数中的第一个语句;super 与 this 关键字不能同时出现在同一个构造函数中调用其他的构造函数。因为两个语句都需要是第一个语句。

super 关键字主要存在于子类方法中,用于指向子类对象中的父类对象;可以访问父类的属性、函数以及构造函数。

例子:使用 super 调用父类的构造方法。

 
    class People{int number; // 证号String name; // 名称// 无参构造People(){}// 有参构造People(int number,String name){this.number=number;this.name=name;System.out.println("我的名字是"+name+",证号是:"+number);}}// 继承 People 类class Adult extends People{boolean a; // 是否为成年人Adult(int number,String name,boolean b){// 调用父类的构造方法super(number,name);a=b;System.out.println("是否成年="+a);}}public class Test {public static void main(String[] args) {Adult adult = new Adult(9901, "张三", false);}}

执行结果:

 
    我的名字是张三,证号是:9901是否成年=false

例子:子类使用 super 访问和调用被子类隐藏的成员变量和方法。

 
    class Sum {int n;// 计算 1+2+...+n 的值float f() {float sum=0;for(int i=1;i<=n;i++){sum=sum+i;}return sum;}}// 继承 Sum 类class Average extends Sum{int n;// 计算 1+2+...+n 的平均值float f() {float c;super.n=n;// 调用父类的计算 1+2+...+n 的方法c=super.f();return c/n;}// 计算 (1+2+...+n)/2 的值float g() {float c;c=super.f();return c/2;}}public class Test {public static void main(String[] args) {Average aver=new Average();aver.n=100;float resultOne=aver.f();float resultTwo=aver.g();System.out.println("resultOne="+resultOne);System.out.println("resultTwo="+resultTwo);}}

执行结果:

 
    resultOne=50.5resultTwo=2525.0
class Employee {
    private String name;// 员工姓名
    private String birth;// 出生年月
    private String position;// 职位

    // 使用有参构造方法初始化Employee
    public Employee(String name, String birth, String position) {
        this.name = name;
        this.birth = birth;
        this.position = position;
    }
    // 定义 introduction 方法输出员工信息
    public void introduction() {
        System.out.println("员工姓名:" + name + "n出生年月:" + birth + "n职位:" + position);
    }
}

public class Salary extends Employee {
    private double salary; // 薪水
    // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
    
    // 定义Salary的有参构造方法,同时在子类中指代父类构造器
    Salary(String name, String birth, String position,double salary){
       super(name,birth,position);
       this.salary=salary;
    }

    // 重写introduction方法,使用super保留父类原有的功能,新添输出员工薪水的功能
     public void introduction(){
         super.introduction();
         System.out.println("薪水:"+salary);
     }
    
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/736731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号