我是Java的初学者,刚刚开始编写核心java代码。 我浏览了页面中的访问控制表:https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
根据该表,对于子类,如果方法没有修饰符,则限制访问Super类的方法(让我们调用此CASE-1)。
如果使用" protected"声明方法,则授予子类访问权限(让我们调用此CASE-2)。
我准备了以下代码来测试CASE-1和CASE-2。 超级类:Test_1代码:
package com.nc.test;
public class Test_1 {
protected void test_3_print()
{
System.out.println("Test 3 print.");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Test 1 MAIN CLASS.");
}
}
子类:subTest_1代码:
package com.nc.test1;
import com.nc.test.Test_1;
class subTest_1 extends Test_1 {
public static void main(String[] args)
{
System.out.println("FROM SUB CLASS.");
Test_1 t11 = new Test_1();
t11.test_3_print();
}
}
正在测试的方法:test_3_print
当test_3_print不包含任何修饰符(仅void..this为CASE-1)时,我遇到错误:
" Test_1类型的方法test_3_print()不可见"
这符合我上面提到的表格。 但是,当test_3_print的修饰符设置为" protected"就像在上面的代码中,我仍然得到相同的错误。这与表格相矛盾。
我做错了什么或者我错过了什么?