为什么子类中没有可见修饰符的字段?

时间:2015-03-12 02:09:52

标签: java subclass visibility access-modifiers

为什么子类中没有可见修饰符的字段?

我的超级班:

public class SuperClass {

String s = "superString";

    public void method(){
       System.out.println("Super");
    }
 }

我的子课程:

public class Test extends SuperClass{

public static void main(String args[]){
    Test t = new Test();
    System.out.println(t.s);
  }
}

我没有收到来自eclipse的错误消息,程序打印出来:superString ...

但它不应该因为没有修饰符字段只在类和包中可见但在子类中不可见,或者我误解了什么?感谢

2 个答案:

答案 0 :(得分:3)

拥有修饰符意味着该字段或方法的范围是“仅包”。

因此,您的子类必须与超类位于同一个包中,因为它可以访问超类中没有修饰符的字段。

答案 1 :(得分:3)

  

如果没有修饰符,则应用默认访问权限   默认访问为包访问,具有默认访问权限的类可以   只能由同一个包中的类看到

您的班级Test必须与SuperClass相同的套餐与其可见的原因相同。

来源:http://www.datadisk.co.uk/html_docs/java/access_control.htm