您的位置:首页 > 其它

对象的上转型对象

2016-04-06 11:02 211 查看
如果一个Dog类是Animal类的子类,xiaohei 是Dog的一个对象,如果 animal1是Animal类的对象,令 animal1 = xiaohei。则称animal1 是 xiaohei 的上转型对象,即:小黑是狗,小黑也是animal。但animal1只具有Dog从Animal继承或改写的成员和方法,也就是失去了子类自己的属性。

样例如下:

Animal类:

package zjl.java;
public class Animal {
private int leg = 4;
private int arm = 2;
public void speak(){
System.out.println("...");
System.out.println("i have 4 legs and 2 arms");
}
}


Dog:

package zjl.java;
public class Dog extends Animal {
String name;
Dog(String s){
this.name = s;
}
public void tellName()
{
System.out.println("My name is "+this.name + "。");
}
@Override
public void speak(){
System.out.println("I am a dog,my name is "+name);
System.out.println("汪汪汪");
}
}


主类:

package zjl.java;
public class TestClass {
public static void main(String[] args) {
Dog xiaoHei = new Dog("小黑");
Animal animal1 = new Animal();
animal1 = xiaoHei;
animal1.speak();
}
}


结果:

I am a dog,my name is 小黑
汪汪汪

注:书上说如果子类改写了父类的静态方法,子类对象的上转型对象不能调用子类的静态方法,只能调用父类的静态方法。但是我试了下静态方法好像不能重写啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: