继承
- 是为了重用父类代码。两个类若存在他和她的关系就可以使用继承。同时继承也为实现多态做了铺垫。
多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
多态,简而言之就是同一个行为具有多个不同表现形式或形态的能力。比如说,有一杯水,我不知道它是温的、冰的还是烫的,但是我一摸我就知道了。我摸水杯这个动作,对于不同温度的水,就会得到不同的结果。这就是多态。多态的条件继承。在多态中必须存在有继承关系的子类和父类。重写。子类对父类的默些方法重新定义,在调用这些方法的时候就会调用子类的方法。向上转型。在多态中需要将子类的引用赋值给父类对象,只有这样该引用才能具备技能调用父类的方法和子类的方法。
多态的条件
- 继承。在多态中必须存在有继承关系的子类和父类。
- 重写。子类对父类的默些方法重新定义,在调用这些方法的时候就会调用子类的方法。
- 向上转型。在多态中需要将子类的引用赋值给父类对象,只有这样该引用才能具备技能调用父类的方法和子类的方法。
练习 实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty和Staff。具体要求如下:
- (1)Person类中的属性有:姓名name(String类型)、地址address(String类型)、电话号码telephone(String类型)和电子邮 件地址email(String类型)。
- (2)Employee类中的属性有:办公室office(String类型)、工资wage(double类型)和受雇日期hiredate(String类型)。
- (3)Faculty类中的属性有:学位degree(String类型)、级别level(String类型)。
- (4)Staff类中的属性有:职务称号duty(String类型)。
package lianxi;
public class Employee extends Person {
private String office="办公室";
private double wage=10000;
private String hiredate="三月二十号";
}
package lianxi;
public class Faculty extends Employee {
private String degree="大专";
private String level="级别";
}
package lianxi;
public class Person { private String name="姓名"; private String address="地址"; private String telephone="电话"; private String email="电子邮箱";
}
package lianxi;
public class Staff extends Employee {
private String duty="职务称号";
}