JAVA里什么是上转型对象?

2025年03月12日 20:58
有4个网友回答
网友(1):

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

网友(2):

Object obj = new String();

List list1 = new ArrayList();

List list2 = null;
ArrayList aList = new ArrayList();
list2 = aList;

子类的对象由一个父类的引用关联. (向上转型).
Tips:仔细体会这句话.

网友(3):

一个对象可以作为它自己的类型使用。
但你也可以作为它的基础类的一个对象。
取得一个对象句柄,并将它作为基础类型句柄使用的行为就是上转型(也称上溯造型),该对象就是上转型对象。(thinking in java里面的话)
上转型其实也是多态的体现。

我简单举个例子:
有一个类Circle继承了类Shape。Circle就是一个子类(或者是基础类)
上转型就是:
Shape s=new Circle();
就是将子类Circle 的一个实例向上转型给父类Shape。

可以去看一下Thinking in java这本书,我觉得讲的比较仔细,还有为什么要有上转型对象,都讲地很好的。

网友(4):

class Human{
public void drink(){System.out.println(