下面为测试代码,去掉注释部分会出现异常,哪位大虾帮忙解释一下,谢谢
- Java code
public class Test1{ private void run() { System.out.println("Test1"); } public static void main(String[] args) { Test1 t1 = new Test2(); t1.run();//调用私有方法 //Test3 t3 = new Test4(); //t3.run();//调用私有方法 }}class Test2 extends Test1{}class Test3{ private void run2() { System.out.println("Test1"); }}class Test4 extends Test3{}
------解决方案--------------------
哥 你t3.run();那个方法是 run2好不好啊
run 2啊 2啊 2。。。
仔细一点就发现2了。。。。
class Test3
{
private void run2()
------解决方案--------------------
如果你把main方法移到Test2 中后
编译器告诉我:Test1.java:16: run() 可以在 Test1 中访问 private
因为main方法在Test1中,在类的内部,所有可以调用私有成员变量和方法,
所以在Test1 中的main方法中调用run方法可以,但是在Test2中就不行了。
------解决方案--------------------
private是同一个类里可见!
------解决方案--------------------
因为main方法也是类里的方法,同一个类里的方法当然能够调用此类中的private方法了,只不过main函数是静态的,所以需要new一个实例来调用这个方法而已。
- Java code
public class Test { private int a = 34; private void print(){ System.out.println("Good"); } public static void sayGood(){ new Test().print(); } public static void main(String[] args){ new Test().print(); System.out.println(new Test().a); Test.sayGood(); }}
------解决方案--------------------
private 权限是当前类。。。
------解决方案--------------------
private权限说明的很清晰啊?为何还有此一问
------解决方案--------------------
------解决方案--------------------