JAVA 上转型对象
假设,B是A的子类或间接子类,当用子类B创建一个对象,并把这个对象的引用放到A类声明的对象中时,比如:
A a;
a=new B();
那么就称对象a是子类对象b的上转型对象,对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能。
上转型对象具有如下特点:
上转型对象实例:
class Animal{
void cry(){
System.out.println("I don't known");
}
}
class Dog extends Animal{
void cry(){
System.out.println("汪汪...");
}
}
public class Kq_8 {
public static void main(String[] args){
Animal animal=new Dog();//animal是Dog类对象的上转型对象
animal.cry();
}
}
输出结果是 : "汪汪...
而不是 I don' t know
注意:
(1)上转型对象不能操作子类声明定义的成员变量;也不能使用子类声明定义的方法。
(2)上转型对象可以操作子类继承的成员变量和隐藏的成员变量,也可以使用子类继承的或重写的方法。
(3)上转型对象不能操作子类新增的方法和成员变量。
(4)可以将对象的上转型对象再强制转换到一个子类对象,此时,该子类对象又具备了子类所有属性和功能。
再通过一个实例来说明:
class Mammal{
private int n=40;
void crySpeak(String s){
System.out.println(s);
}
}
class Abc extends Mammal{
void computer(int aa,int bb){
int cc=aa*bb;
System.out.println(cc);
}
void crySpeak(String s){
System.out.println("*****************"+s);
}
}
public class Kq_7 {
public static void main(String[] args){
Mammal a=new Abc(); //a是Abc类对象的上转型对象
a.crySpeak("tammy");
Abc b=(Abc)a; //把上转型对象强制转化为子类的对象
b.computer(2,2);
}
}
运行结果:
*****************tammy
4