java基础--多态-域与静态方法1(java编程思想)
2013-10-25 14:30
274 查看
看以下例子:
输出结果:
0;1;
1;1;0
结果分析:当Sub转型为Super引用时,任何域访问操作都将由编译器解析,因此不再是多态的。本例中,
为Super.field和Sub.field分配了不同的存储空间。
这样,Sub实际上包含了两个field;它自己的和它从Super处得到的,然而在Sub中的field时所产生的默认域并非Super.field。
因此为了得到Super.field,必须显示的指明super.field.
package extendsTest; /** * * @author xiaoyu * */ class Super{ public int field=0; public int getField(){ return field; } } class Sub extends Super{ public int field=1; public int getField() { return field; } public int getSuperField(){ return super.field; } } public class TestExtendsField { public static void main(String args[]){ Super super1=new Sub(); System.out.println(super1.field+";"+super1.getField()+";"); Sub sub=new Sub(); System.out.println(sub.field+";"+sub.getField()+";"+sub.getSuperField()); } }
输出结果:
0;1;
1;1;0
结果分析:当Sub转型为Super引用时,任何域访问操作都将由编译器解析,因此不再是多态的。本例中,
为Super.field和Sub.field分配了不同的存储空间。
这样,Sub实际上包含了两个field;它自己的和它从Super处得到的,然而在Sub中的field时所产生的默认域并非Super.field。
因此为了得到Super.field,必须显示的指明super.field.
相关文章推荐
- java基础--多态-域与静态方法2--类中各字段方法的加载顺序
- 【Java基础之多态中静态方法重写问题】java中静态方法的重写问题详解
- java 基础 面向对象(多态中的成员访问特点之静态成员成员方法)
- 一个javafx初学者实现国际象棋简单方法(很粗暴)棋子实现不再提供 没有使用java编程思想用的很基础的c语言思想
- Java基础静态方法
- JAVA编程基础(六) 在Java类中添加方法
- JAVA基础学习笔记:有趣的静态方法
- java中多态的前提条件,与静态绑定方法混淆
- Java基础(五)---局部变量、全局变量、静态变量、final变量、静态常量、静态方法
- Java基础静态变量、静态方法
- Java多态及静态方法对动态方法的调用
- Java 基础 静态工厂方法
- java===java基础学习(8)---静态域与静态方法
- java基础--java静态代码块和静态方法的区别、static用法
- JAVA基础再回首(四)——面向对象思想、类与对象、成员/局部变量、匿名对象、封装、private、this、构造方法
- 【13】Java基础:java中的静态代码块,静态变量,静态方法
- 【Java编程思想第4版错误记录】Collections.addAll()静态方法与Collection.addAll()成员方法
- 2.24 Java基础总结 ①访问权限②static③静态方法④实例初始化块⑤静态初始化块
- java===java基础学习(13)---this,static(静态变量和静态方法)的使用
- JAVA基础初探(三)面向对象思想、类与对象、成员变量与局部变量、构造方法、static关键字详解