设Employee(雇员)是超类 anager(经理)的子类
一. 可以将一个子类对象赋给超类变量
Employee staff=new Employee();
Manager boss= new Manager();
staff=boss; (boss是子类) 注意赋值是右传左
二. 然而不能将超类的引用赋值给子类变量
Employee staff=new Employee();
比如 Manager boss1=staff;
所有经理都是雇员,但雇员并不都是经理。
例子:
Employee staff=new Manager();
staff将直接调用父类的方法,当然如果子类重写了父类的方法,那么调用的就是子类的方法!
这条语句的好处是有多个子类时,不用每个子类去写一个相同方法,直接父类中写一个就行了。
坏处就是staff不能调用子类中有而父类中没有的方法(即子类特有的方法)
那么应该怎么办呢?
Manager M=null; // 必须有此过程,即必须要重新创建一个对象!!!!*
if( staff instanceof Manager)
{
M = (Manager) staff;
}
用这个M对象去调用子类特有的方法!!!