我有以下两个课程:
测试.java
package com.test.app;
public class Test {
public int a=10;
protected void testFunc() {
// TODO Auto-generated method stub
System.out.println("Test class--> testFunc");
}
}
另一种是
主程序.java
包com.test.main;
import com.test.app.Test;
public class Main extends Test {
public static void main(String[] argv) {
System.out.println("Main Method");
Main main =new Main();
main.testFunc(); // No Error
Test test = new Test();
test.testFunc(); // Error
}
}
Test 类型中的方法 test.testFunc() 不可见
The Test#testFunc()
方法只能由子类访问(例如Main
)和同一包中的类(com.test.app
).
这就是为什么声明
main.testFunc();
编译得很好(因为Main
是一个子类Test
并且允许调用testFunc()
).
然而这个说法
test.testFunc();
无法编译,因为包所在Main
类位于不是com.test.app
, but com.test.main
.
更多信息:
- 之间的区别public, default, protected, and private https://stackoverflow.com/questions/215497/difference-among-public-default-protected-and-private
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)