子类与父类的关系是什么样的?

package imooc;       //               imooc包中
public class HelloWorld {
    protected static int a=1;//protected不能被异包非子类调用
}
---------------------------------------------------------------------------
package imooc.second;//        imooc.second包中

import imooc.HelloWorld;

public class Hello extends HelloWorld {
}
-------------------------------------------------------------------------
package imooc.second;//        imooc.second包中           

public class Hello2 {
    public static void main(String[] args) {
        System.out.println(Hello.a);
        /*报错,提示要将HelloWorld类中protected修饰符改为public。如果Hello类中创建了属于Hello的类变
         *量a,那么这里应该不会报错。但是这里报错说明Hello类中没有protected修饰的属于Hello类的类变量
         *a。反而快速修改提示修正HelloWorld类中的修饰符为public,那么我有理由认为子类相当于一个中转
         *站,并没有属于自己的成员。
         */
    }
}

这种理解对不对?

子类与父类是集合中的包含关系,创建的子类并没有构造新的属于子类的成员(简单的继承,无override),而是相当于将父类中可继承的成员组合起来,形成的一个类。通过   子类名   调用任何成员,实际上指向的是父类的成员. 因此通过 子类名 调用成员,受制于父类中的访问修饰符。

七九九
浏览 2092回答 2
2回答

wilsonwan

protected 同包及子类可访问,Hello2非子类也非同包,所以访问被拦截如果你在Hello中添加一个proteted的静态方法来访问HelloWorld类中的a,就不会被拦截拦截一词可能用的不恰当

一条小咸鱼

应该是的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java