多态性不适合继承链中的实例变量
来源:互联网 发布:淘宝旺旺可以改名字吗 编辑:程序博客网 时间:2024/05/16 15:06
多态性不适合继承链中的实例变量
在初学Java程序设计的时候,教材上有这样一个程序是讲“多态性不适合继承链中的实例变量”的。
class Base{int x=1;void print(){System.out.println("当前类为:"+this.getClass().getName());System.out.println("对象的 x="+this.x);}}class Derived extendsBase{int x=2;void print(){System.out.println("当前类为:"+this.getClass().getName());System.out.println("对象的 x="+this.x);}void out(){System.out.println("OK!");}}public class Confusions{public static void main(String[] args){Base obj=new Derived();obj.print();System.out.println("对象的 x="+obj.x);}}运行结果如下:
分析一下程序,其实主要涉及到Java的继承与覆盖(域的隐藏),以及对象的类型转换(向上类型转换)的相关知识点。
1、域的隐藏:
2、向上类型转换:从子类移到父类,这是安全的(从一个特殊类型转换到一个通用类型)。唯一的问题就是可能丢失在子类中定义的方法和变量。(eg. 在上面的程序中如果通过obj调用out()方法,将产生编译错误)。
0 0
- 多态性不适合继承链中的实例变量
- 继承中的多态性
- Java进阶(继承中的多态性)
- 继承和多态性 -- 方法和变量的覆盖和隐藏
- 一个C++继承、虚函数和多态性的实例代码
- java中类的继承性和多态性实例
- Java学习笔记:类在继承中的多态性
- Ruby中的实例变量
- java中的实例变量
- java中的实例变量
- OC中继承子类对象调用方法机制 子类对象访问父类中的实例变量
- java 父类访问子类对象的实例变量 继承过程中的执行顺序
- OC中继承子类对象调用方法机制 子类对象访问父类中的实例变量
- java 继承中的 成员变量
- 25.继承2:实例变量和继承之后的关系
- 变量的多态性
- ruby中的实例变量和类变量
- JAVA中的实例变量和静态变量
- 文件读写操作
- Canvas与Paint的初级使用
- Json串的单引号和双引号问题
- [Err] 1062 - Duplicate entry '111' for key 'PRIMARY'
- LeetCode 082 Remove Duplicates from Sorted List II
- 多态性不适合继承链中的实例变量
- 基础
- Java final以及static用法简单demo
- android-Saving Data
- Ubuntu下为SD卡分区
- PHP中的set_time_limit,max_execution_time,sleep
- Unity2d 移动设备的横竖屏适配及UGUI画布调整使Editor与真实设备的UI显示保持一致
- spring,mybatis整合时出现的一个小问题
- 多线程的使用(1)-performSelectorOnMainThread