对象的上转型对象
2016-04-06 11:02
211 查看
如果一个Dog类是Animal类的子类,xiaohei 是Dog的一个对象,如果 animal1是Animal类的对象,令 animal1 = xiaohei。则称animal1 是 xiaohei 的上转型对象,即:小黑是狗,小黑也是animal。但animal1只具有Dog从Animal继承或改写的成员和方法,也就是失去了子类自己的属性。
样例如下:
Animal类:
Dog:
主类:
结果:
I am a dog,my name is 小黑
汪汪汪
注:书上说如果子类改写了父类的静态方法,子类对象的上转型对象不能调用子类的静态方法,只能调用父类的静态方法。但是我试了下静态方法好像不能重写啊。
样例如下:
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 小黑
汪汪汪
注:书上说如果子类改写了父类的静态方法,子类对象的上转型对象不能调用子类的静态方法,只能调用父类的静态方法。但是我试了下静态方法好像不能重写啊。
相关文章推荐
- Linux内核如何装载和启动一个可执行程序
- 安卓linux真机调试
- Java 8新特性-5 内建函数式接口
- Qt学习备忘录(1)
- spark部署
- hdu 1238 Substrings(求子串或者他的逆序子串出现在每个字符串中)
- 起飞啦,css3云彩动画
- 让你的 Node.js 应用跑得更快的 10 个技巧
- 校验和算法
- Windows 下 mysql 自动备份
- cocos2d-x之核心类
- jsTree 点击节点事件及根据 ID 获取节点方法
- 【行测】逻辑推理
- R语言 Shapiro-Wilk检验
- Android Studio插件实现语言国际化
- Java 多线程同步和异步详解
- 用httpPost对JSON发送和接收的例子
- redis开机启动
- 朋友圈动态性能优化
- 1.1 弹出窗口控制