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),而是相当于将父类中可继承的成员组合起来,形成的一个类。通过 子类名 调用任何成员,实际上指向的是父类的成员. 因此通过 子类名 调用成员,受制于父类中的访问修饰符。
wilsonwan
一条小咸鱼
相关分类