首页 > 编程语言 >21-面向对象编程-多态参数

21-面向对象编程-多态参数

时间:2023-09-05 09:56:36浏览次数:58  
标签:salary 21 bonus double void 多态 面向对象编程 public name

多态参数

方法定义的形参类型为父类类型,实参类型允许为子类类型

 

员工类(父类):

public class Empolyee {
    private String name;
    private double salary;
 
    public Empolyee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }
 
    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 double GetAnnual(){
        return 12*salary;
    }
}

普通员工类(子类):

public class Worker extends Employee {
    public Worker(String name, double salary) {
        super(name, salary);
    }

    //普通员工的特有方法
    public void work() {
        System.out.println("普通员工" + getName() + " is working!");
    }

    //员工的年薪,重写方法
    public double GetAnnual(){
        return super.GetAnnual();
    }
}

经理类(子类):

public class Manager extends Employee{
    //子类的特有属性,奖金
    private double bonus;

    public Manager(String name, double salary, double bonus) {
        super(name, salary);
        this.bonus = bonus;
    }

    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }

    //经理的特有方法
    public void manager() {
        System.out.println("经理" + getName() + " is managing!");
    }

    //经理的年薪,重写方法
    public double GetAnnual(){
        return super.GetAnnual() + bonus;
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        Worker w1 = new Worker("马铃薯", 3000);
        Manager m1 = new Manager("Smith", 5000, 10000);

        Test test = new Test();
        test.showEmpAnnual(w1);
        test.showEmpAnnual(m1);

        test.testWork(w1);
        test.testWork(m1);
    }

    //测试类中添加一个方法showEmpAnnual(Employee e),实现获取任何员工对象的年工资
    public void showEmpAnnual(Employee e) {
        System.out.println(e.getAnnual());
    }

    //测试类中增加一个方法testWork,如果是普通员工则调用work方法,如果是经理则调用manager方法
    public void testWork(Employee e) {
        if(e instanceof Worker) {
            //向下转型
            //Worker worker = (Worker) e;
            //worker.work();
            ((Worker) e).work();
        }else if(e instanceof Manager) {
            //向下转型
            //Manager manager = (Manager) e;
            //manager.manager();
            ((Manager) e).manager();
        }else {
            System.out.println("暂时不做处理");
        }
    }
}

 

标签:salary,21,bonus,double,void,多态,面向对象编程,public,name
From: https://www.cnblogs.com/REN-Murphy/p/17678878.html

相关文章

  • C++系列十:日常学习-非多态类型和多态类型
    目录介绍:案例:介绍:非多态类型和多态类型是C++中的两种类型,它们的主要区别在于是否包含虚函数和是否能进行动态绑定。非多态类型是指没有虚函数的类型。这种类型在编译时进行类型检查,因此不能在运行时改变其静态类型。对于非多态类型,编译器在编译时就已经确定了其所有信息,包括成......
  • 代码(待加解释) hdu2196
    #include<bits/stdc++.h>usingnamespacestd;constintmaxn=3e4+10;#definelllonglonginthead[maxn],ver[maxn],nxt[maxn],edge[maxn];inttot;llf[maxn][3];intrx[maxn];voiddfs1(intx,intfa){  for(inti=head[x];i;i=nxt[i])  {   ......
  • 212 模拟科三
    下午去,晚上七点多回来模拟紧张,发挥不好,一次OK,一次不行(无缘无故变更车道没打转向灯),要记得灯光复位,不要发懵。记得考试流程,这个项目是什么,下个项目又是什么。不要紧张,明天考试好好发挥,一次过!......
  • C++11——3.21-3.22 move,forward
    ★★★原文链接★★★:https://subingwen.cn/cpp/move-forward/3.21move资源的转移3.22forward完美转发3.21move资源的转移move方法可以将左值转换为右值使用这个函数并不能移动任何东西,它将一个对象的所有权从这个对象转移到另一个对象,只是转移,没有内存拷贝。move语......
  • 解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
    最近用MASM32编程更新SysInfo,增加对IPv6连接信息的收集,使用到了typedefstruct_MIB_TCP6ROW_OWNER_MODULE{UCHARucLocalAddr[16];DWORDdwLocalScopeId;DWORDdwLocalPort;UCHARucRemoteAddr[16];DWORDdwRemoteScopeI......
  • 泛微E-Office UploadFile.php任意文件上传漏洞 CNVD-2021-49104
    漏洞描述在/general/index/UploadFile.php中上传文件过滤不严格导致允许无限制地上传文件,攻击者可以通过该漏洞直接获取网站权限漏洞复现fofa语法:app="泛微-EOffice"登录页面如下:POC:POST/general/index/UploadFile.php?m=uploadPicture&uploadType=eoffice_logo&userId=H......
  • 泛微E-cology LoginSSO.jsp SQL注入漏洞 CNVD-2021-33202
    漏洞简介泛微e-cology是专为大中型企业制作的OA办公系统,支持PC端、移动端和微信端同时办公等。泛微e-cology存在SQL注入漏洞。攻击者可利用该漏洞获取敏感信息。漏洞影响泛微e-cology8.0漏洞复现fofa语法:app="泛微-协同办公OA"登录页面如下:POC:/upgrade/detail.jsp/log......
  • 自我介绍20232321王曦轶
    王曦轶,爱国,奉献,坚持。我虽然没有专业方面的特长,也深知自己和优秀同学的差距,但我不因此气馁,也不会放弃,我认为我的特长便是坚毅的品质,坚持不懈的精神,不管做什么事,有多么困难,我都会全力以赴地去做,尽全力完成,即使计算机基础落后于人,但我相信,凭自己的努力奋斗一定可以在学习中成长,最终......
  • P8386 [PA2021] Od deski do deski
    P8386[PA2021]Oddeskidodeski洛谷:OddeskidodeskiLOJ3600OddeskidodeskiSolution先考虑如何判定一个序列\(a\)是否合法。记\(dp_{i}=0/1\)表示考虑前\(i\)个数是否能被删空:\(dp_{i}\xleftarrow{\texttt{or}}dp_{j-1}[a_i=a_j]\)。初始化\(dp_{0}=......
  • *【学习笔记】(21) Prufer 序列
    Prufer序列Prufer序列可以将一个带标号\(n\)个节点的树用\([1,n]\)中的\(n-2\)个整数表示,即\(n\)个点的完全图的生成树与长度为\(n-2\)值域为\([1,n]\)的数列构成的双射。Prufer序列可以方便的解决一类树相关的计数问题,比如凯莱定理:\(n\)个点的完全图的生成树有......