何为多态?何为动态绑定?
一个对象变量(例如, 变量 e ) 可以指示多种实际类型的现象被称为多态( polymorphism)。
在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding。)
那么具体像什么样子呢?用代码案例来实际体会下。
员工信息:
public class Employee {
private String name;//姓名
private double 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;
}
Employee(){
this.name = "";
this.salary = 0;
}
Employee(String name,double salary){
this.name = name;
this.salary = salary;
}
}
经理信息:
import java.text.DecimalFormat;
public class Manager extends Employee{
private double bonus;//奖金
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
public double getSalary(){
DecimalFormat df = new DecimalFormat("#.00");
String amount = df.format(bonus + super.getSalary());
return Double.parseDouble(amount);
}
public Manager(){
this.bonus = 0.00;
}
public Manager(double bonus){
this.bonus = bonus;
}
public Manager(String name,double salary,double bonus){
super(name,salary);
this.bonus = bonus;
}
}
Test:
public class Test1 {
public static void main(String[] args) {
Test1.jsSalary();
}
/**
* 一个对象变量(例如, 变量 e ) 可以指示多种实际类型的现象被称为多态( polymorphism)。
在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding。)
*/
static void jsSalary(){
Manager boss = new Manager("经理",5000,500);
Employee[] yg = new Employee[3];
yg[0] = boss;
yg[1] = new Employee("员工1",5000);
yg[2] = new Employee("员工2",2111);
for(Employee e:yg){
System.out.println("姓名:"+ e.getName() + " 工资:"+e.getSalary());
}
}
}