Java中的继承,重写与遮蔽
2016-03-02 19:42
555 查看
private 修饰的属性能被继承,只是无法访问!
package Test11;
Java中只有虚方法是多态的 ,字段永远不参与多态。所以当father.getJ()里写renturn j ; 的时候 ,这个j 就只会指father.j 而不会指son.j。
虚方法: 非private的,非static且非final的方法
由于子类中没有重写getJ()方法 所以 返回的是父类中的j;
子类重写了getI()方法且,定义个自己的变量i 则发生遮蔽 (遮蔽了父类的I)
package Test11;
class Father { int i = 1; private int j = 10; public int getI() { return i; // return this.i ??? } public int getJ() { return j; // return this.j; ?? } } class Son extends Father { int i = 2; int j =20; public int getI() { return i; } } public class Test222 { public static void main(String[] args) throws Exception { Son s = new Son(); // Father f=new Son();
System.out.println(s.getI());//2 System.out.println(s.getJ()); // 10 // System.out.println(f.getJ()); // Class <?> c = Class.forName("Test11.Son"); // Class< ?> b=c.getSuperclass(); // Field[] s = b.getDeclaredFields(); // for (Field field : s) { // System.out.println(field.getName()); // } // } }
Java中只有虚方法是多态的 ,字段永远不参与多态。所以当father.getJ()里写renturn j ; 的时候 ,这个j 就只会指father.j 而不会指son.j。
虚方法: 非private的,非static且非final的方法
由于子类中没有重写getJ()方法 所以 返回的是父类中的j;
子类重写了getI()方法且,定义个自己的变量i 则发生遮蔽 (遮蔽了父类的I)
相关文章推荐
- java类加载器总结
- java内存分配和String类型的深度解析
- Java中equals与== 的区别
- java操作数据库小工具--韩顺平SqlHelper
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- spring mvc 项目 相关配置文件小结
- java中Class对象详解
- Leetcode:235. Lowest Common Ancestor of a Binary Search Tree(JAVA)
- Eclipse中如何开启Assert断言
- Java内存访问重排序笔记
- Java虚拟机类加载过程
- Java中的大数字操作
- HDU 1016(Java) 好大一个坑!!!
- Spring Cache
- 用Struts2来完成一个学生注册界面
- 白话Spring(基础篇)---bean的作用域
- [转]Eclipse:Cannot complete the install because of a conflicting dependency
- java并发编程 Lock
- java并发编程 Lock
- SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-006-给bean运行时注入值(Environment,Property文件)