java多态数据绑定

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;

}

}
此为正式代码的三个类,结构非常轻巧,引用经典。

面向开发需求,记录学习之路♪(^∀^●)ノ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值