没有修饰符vs受保护

时间:2016-03-11 06:05:30

标签: java protected access-modifiers

我是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"就像在上面的代码中,我仍然得到相同的错误。这与表格相矛盾。

我做错了什么或者我错过了什么?

0 个答案:

没有答案