JAVA:上转型对象就是子类的对象,但是去掉了父类没有的方法和变量,这么理解对吗?

来源:百度知道 编辑:UC知道 时间:2024/05/14 08:57:30
??

class Human{
public void drink(){System.out.println("Human");}
}
class YongMan extends Human{
public void drink(){System.out.println("YongMan");}}
}
public class Test{
public static void main(String arge[]){
Human e2=new YongMan();
e2.drink();
}
}

以上面这个程序为例子
Human e2=new YongMan();
这句其实是指父类对象e2是子类YongMan对象的上转型对象

上转型对象不能操作子类新增的成员变量(失掉了这部分属性);不能使用子类新增的方法(失掉了一些功能)。
上转型对象可以操作子类继承或者隐藏的成员变量,也可以使用子类继承的或者重写的方法。上转型对象操作子类继承或重写的方法,其作用等价于子类对象去调用这些方法。因此,如果子类重写了父类的某个方法,则当对象的上转型对象调用这个方法时一定是调用了这个重写的方法

上面的YongMan 类中的drink()方法 重写了父类的方法
所以最后的输出结果是YongMan

来自 http://zhidao.baidu.com/question/61411564.html?si=2