Java:当我使用extends关键字实现多重继承时,在不同包的不同类中没有访问受保护的方法
我有以下两门课: Test.javaJava:当我使用extends关键字实现多重继承时,在不同包的不同类中没有访问受保护的方法,java,Java,我有以下两门课: Test.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"); } } 另一个是 主类 包com.test.main im
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");
}
}
另一个是
主类
包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.testFunc()方法不可见只有子类(如Main
)和同一包中的类(com.test.app
)可以访问test#testFunc()
方法
这就是为什么要发表声明
main.testFunc();
编译很好(因为Main
是Test
的子类,并且允许调用testFunc()
)
然而,这一声明
test.testFunc();
不编译,因为Main
类所在的包不是com.test.app
,而是com.test.Main
更多信息: