多态参数
package day03;
public class Demo1 {
public static void main(String[] args) {
Worker worker = new Worker("Tom", 5000);
Manager manager = new Manager("Tom2", 10000, 50000);
Demo1 demo1 = new Demo1();
demo1.showEmpAnnual(worker);
demo1.showEmpAnnual(manager);
demo1.testWork(worker);
demo1.testWork(manager);
}
public void showEmpAnnual(Employee employee){
System.out.println(employee.getAnnual());
}
public void testWork(Employee employee){
if(employee instanceof Worker){
((Worker)employee).work();
}else if (employee instanceof Manager){
((Manager)employee).manage();
}
}
}
输出结果: 60000.0
170000.0
普通员工 Tom is Working
经理 Tom2 is manageing
class Employee{
private String name;
private double salary;
public Employee(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;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", salary=" + salary +
'}';
}
public double getAnnual(){
return 12 * salary;
}
}
class Worker extends Employee{
public Worker(String name, double salary) {
super(name, salary);
}
public void work(){
System.out.println("普通员工 " + getName() + " is Working");
}
@Override
public double getAnnual() {
return super.getAnnual();
}
}
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 manage(){
System.out.println("经理 " + getName() + " is manageing");
}
@Override
public double getAnnual() {
return super.getAnnual() + bonus;
}
}