多态的应用 ——多态参数

面向对象编程。多态
多态的应用
2)多态参数
方法定义的形参类型为父类类型,实参类型允许为子类类型
应用实例1:前面的主人喂动物


应用实例2: 
1.定义员工类Employee,包含姓名和月工资[private],以及计算年工资getAnnual的方法。普通员工和经理继承了员工,经理类多了奖金bonus属性和管理manage方·
法,普通员工类多了work方法,普通员工和经理类要求分别重写getAnnual方法

2.测试类中添加一个方法showEmpAnnal(Employee e),实现获取任何员工对象的年工资,

3.并在main方法中调用该方法[e.getAnnual()]测试类中添加一个方法,testWork,如果是普通员工,则调用work方法,如果是经理,则调用manage方法

 1 package com.PolyParameter;
 2 
 3 /**
 4  * 应用实例2: 
 5  * 1.定义员工类Employee,包含姓名和月工资[private],以及计算年工资getAnnual的方法。
 6  * 普通员工和经理继承了员工,经理类多了奖金bonus属性和管理manage方法,普通员工类多了work方法;
 7  * 普通员工和经理类要求分别重写getAnnual方法
 8  * 2.测试类中添加一个方法showAnnal(Employee e),实现获取任何员工对象的年工资,
 9  * 3.并在main方法中调用该方法[e.getAnnual()]测试类中添加一个方法,testWork,
10  * 如果是普通员工,则调用work方法,如果是经理,则调用manage方法
11  */
12 /*
13 实例分析:
14     1.先创建一个父类Employee,赋予姓名、工资等属性,并添加相应的构造器,set和get
15     最后创建一个getAnnual的方法
16     创建子类员工worker和经理Manager,给员工添加work方法,给经理添加奖金bonus和manage管理方法
17     同时给员工和经理添加父类的getAnnual方法
18     2.新建一个testWork类,在测试类中添加一个showAnnal,由于员工和经理都有相应的年工资
19     所以给showAnnal的形参赋予Employee类并定义为e,可以去调用相应的方法
20     3.判断条件+向下转型
21  */
22 public class Test {
23     public static void main(String[] args) {
      //给子类赋予相应的属性
24 worker worker = new worker("tom", 3500, 13); 25 Manager manager = new Manager("smith", 23000, 14, 31000); 26 //给测试类创建对象 27 Test test = new Test(); 28 //调用方法 29 test.showAnnual(worker); 30 test.showAnnual(manager); 31 test.testWork(manager); 32 test.testWork(worker); 33 } 34 35 //测试类中添加一个方法showAnnual(Employee e),实现获取任何员工对象的年工资, 36 public void showAnnual(Employee e) { 37 System.out.println(e.getAnnual()); 38 } 39 40 //并在main方法中调用该方法[e.getAnnual()]测试类中添加一个方法,testWork; 41 // 如果是普通员工,则调用work方法,如果是经理,则调用manage方法. 42 //给形参赋予员工类 43 public void testWork(Employee e) { 44 //判断条件+向下转型 45 //判断e属于worker还是manager,再进行向下转型 46 if (e instanceof worker) { 47 ((worker) e).work();//向下转型 48 //向下转型的另一种方法 49 // worker work = (worker) e; 50 // work.work(); 51 } else if (e instanceof Manager) { 52 ((Manager) e).manage();//向下转型 53 //向下转型的另一种方法 54 // Manager man=(Manager) e; 55 // man.manage(); 56 }else { 57 System.out.println(); 58 } 59 } 60 }

 

posted @ 2022-03-08 15:09  捞月亮的渔夫  阅读(255)  评论(0)    收藏  举报