一段奇怪的代码

原创
2009/12/23 17:52
阅读数 209

今天在和同事复习复用类的时候,突然想到这样一段代码,很变态的用法,输出结果让自己吃了一惊:

public class A {
	private void say() {
		System.out.print("in a\n");
	}
	
	public class B extends A {
		private void say() {
			System.out.print("in b\n");
		}
		
		public void print() {
			say();
		}
	}

	public void getSay() {
		new B().say();
		new B().print();
		((A)(new B())).say();
	}
	

	public static void main(String args[]) {
		A a = new A();
		a.getSay();
	}
}

输出结果:

in b
in b
in a

从结果上看,在 类B之外访问了 类B 的私有方法,这好像和Java的规则(在类之外,包括子类,不能访问类的私有成员)不一样。不能理解,呵呵,大家来解个惑吧!

 

展开阅读全文
加载中
点击加入讨论🔥(2) 发布并加入讨论🔥
2 评论
0 收藏
0
分享
返回顶部
顶部