java多态数据绑定
原文链接:详情链接地址 java多态数据绑定
http://licocom.com/archives/852
最近在看书的时候发现了一个事例,觉得非常的生动,便记录下来。
在此事例中我们可以生动的看到继承,调用,多态,数据绑定等,多种事例。
1.继承调用父类的方法,构造器。
2.多态
3.数据动态绑定
第一:继承调用父类的方法,构造器。
有两种角色:雇员,经理。经理—>(属于)雇员
那么创建雇员类,获取薪水的方法为getSalary,经理继承于雇员获取其所有属性方法,
但获取薪水的算法不同,所以对原有获取薪水进行重写。
原有方法在Employee内,
public void raiseSalary(double byPercent) {
double raise = salary * byPercent / 100;
salary += raise;
}
那么经理类继承于雇员类,修改不同的获得薪水方法,我们采用super调用。
public double getSalary() {
double baseSalary = super.getSalary();
return baseSalary + bonus;
}
调用父类方法,不仅如此,我们也可修改调用父类的构造器,且必须放在方法刚开始。
public Manager(String n, double s, int year, int month, int day) {
super(n, s, year, month, day);
bonus = 0;
}
在这必须对父类构造器调用,并默认赋值。
第二:多态可以指示多种实际类型的现象被称为多态。
Employeeone[] staff = new Employeeone[3];
staff[0] = boss;
staff[1] = new Employeeone("he", 5000, 1888, 10, 16);
staff[2] = new Employeeone("ne", 4000, 1567, 12, 10);
for(Employeeone e:staff) {
System.out.print("name="+e.getName()+",salary="+e.getSalary());
}
如上,我们staff数组分别存放雇员,经理类,而遍历对象e可以根据不同的类,
指向不同的方法,当e引用Manager类,e.getSalary() 调用的是经理的,
当e引用Employee,e.getSalary()调用的是雇员,这里便是数据的动态绑定。
运行代码如下:
MessageTest 主类
import com.licocom.practice.Employee;
public class MessageTest {
public static void main(String[] arge) {
Manager boss = new Manager("coco", 9000, 1955, 12, 15);
boss.setBonus(9000);
Employeeone[] staff = new Employeeone[3];
staff[0] = boss;
staff[1] = new Employeeone(“he”, 5000, 1888, 10, 16);
staff[2] = new Employeeone(“ne”, 4000, 1567, 12, 10);
for(Employeeone e:staff) {
System.out.print(“name=”+e.getName()+",salary="+e.getSalary());
}
}
}
Messang类
public class Manager extends Employeeone {
private double bonus;
public Manager(String n, double s, int year, int month, int day) {
super(n, s, year, month, day);
bonus = 0;
}
public double getSalary() {
double baseSalary = super.getSalary();
return baseSalary + bonus;
}
public void setBonus(double b) {
bonus = b;
}
}
Employee类
import java.util.Date;
import java.util.GregorianCalendar;//时间类
public class Employeeone {
private String name;
private double salary;
private Date hireDay;
public Employeeone(String n, double s, int year, int month, int day) {
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
hireDay = calendar.getTime();
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public Date gethireDay() {
return hireDay;
}
public void raiseSalary(double byPercent) {
double raise = salary * byPercent / 100;
salary += raise;
}
}
此为正式代码的三个类,结构非常轻巧,引用经典。
面向开发需求,记录学习之路♪(^∀^●)ノ