/**
* 2、 假如我们在开发一个系统时需要对员工进行建模,员工包含 3 个属性:
* 姓名、工号以及工资。经理也是员工,除了含有员工的属性外,另为还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。
思路:
1.首先确定,谁是父类?谁是子类?
2.父类已经拥有的,子类通过super就可以获取到,对于父类来说,提供最基本的
属性以及方法.对于子类来说,既然是继承,必须要有自己独特的方法和属性才存在意义.
总结:
面向对象的一个特征----继承.很大程度上减少了代码量,增加了程序的功能扩展,并提高代码的复用.
思考:
继承既然从某种程度上增加的程序的功能扩展以及代码复用.但是,万事之间从来都是利弊交替.
那么究竟继承会存在什么样的弊端呢?
1.由于继承只可以是单继承,那么如果该子类想要重新定义一个体系功能时,就没有再可以继承的权利了.
2.继承也让之前单一的程序变成连续的整体体系.从维护角度看,相对来说也增加了维护的难度.
3.据以以上,因此继承需要在一个必须拥有强大共性的基础上继承才会带来更多效益,为继承而继承,就会使得程序变得轻浮,更加难以维护.
* */
public class Demo02 {
public static void main(String[] args) {
Enployee en = new Enployee("王武",1000,3653.33); //员工父类
Manager ma = new Manager("赵六", 199, 5988.22, 3000.11); //经理子类.
System.out.println(en.toString());
System.out.println(ma.toString());
}
}
class Manager extends Enployee
{
private double bonus;
Manager(String name,int id,double pay,double bonus)
{
super(name,id,pay); //既然父类有了,我直接用还不行吗?
this.bonus = bonus; //父类没有的,那只能自己想办法了...
}
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
@Override
public String toString() { //复写Object中toString方法
return "Manager [bonus=" + bonus + ", Name =" + getName()
+ ", Id =" + getId() + ", Pay =" + getPay() + "]";
}
}
class Enployee //定义父类 员工类
{
private String name; //父类中基本的属性.
private int id;
private double pay;
Enployee(String name,int id,double pay) //初始化参数.
{
this.name = name;
this.id = id;
this.pay = pay;
}
public String getName() { //必要的set,get方法.
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getPay() {
return pay;
}
public void setPay(double pay) {
this.pay = pay;
}
@Override
public String toString() { //复写的toString方法.
return "Enployee [name=" + name + ", id=" + id + ", pay=" + pay + "]";
}
}
|
|