【发布时间】:2014-11-18 08:07:38
【问题描述】:
好的,所以我认为拥有受保护字段的目的是使变量只能由子类和具有受保护字段的类访问。创建子类或超类的对象不应授予对这些字段的访问权限。如果我是正确的,为什么这样的代码编译正确?
//superclass
public class SuperClass{
protected int x = 5;
}
//main class with main method
public class MainClass{
public static void main(String[] args) {
SuperClass a = new SuperClass();
a.x = 8;
System.out.println(a.a);
}
}
这将打印出 8,这意味着我在拥有它们的类之外修改了一个受保护的变量...
【问题讨论】:
-
你的意思是 System.out.println(a.x); ?
-
@user889742 是的,对不起
标签: java polymorphism protected