下列子类D中为什么c.year不可见?package a.b;public class C
{
protected int year = 2010;
}
package a.b.bb;import a.b.C;public class D extends C
{
public static void main(String[] args)
{
C c = new C();
System.out.println(c.year);
}}

解决方案 »

  1.   

      C c = new C();
    c是一个新对象了
      

  2.   

    还是作用域的问题作用域 当前类 同一package 子孙类 其他packagepublic √ √ √ √protected √ √ √ ×friendly √ √ × ×private √ × × ×搞清了作用域,你就应该明白怎么回事了 
      

  3.   

    protected 受保护类型
    同类,同包,不同包中的子类都是可以访问的D d = new D();
    System.out.println(d.year);
    这样就可以了。
      

  4.   


    public class D extends C
    {
        public static void main(String[] args)
        {
            D d = new D();
            System.out.println(d.year);
        }}
      

  5.   

    不同的包,静态方法不可访问proted 成员,但是成员方法可以的
      

  6.   

    protected是可以被访问的范围:同一个包中的类, 子类(在相同包或不同包中都可以), 本类。  而D是C的不同包中的子类,什么不可以访问到C类中的protected成员呢?
      

  7.   

    因为你是这样做的 C c = new C();,而protected说的在不同包中的子类可以访问指的是必须要用子类的对象去访问,不是在子类里用父类的对象访问
      

  8.   

    protected 是保护类型的
    同一包中的和子类可以访问
     C c = new C();不属于其子类
    你可以在D类中直接使用C类得c.year;