【发布时间】:2010-09-24 21:05:00
【问题描述】:
在java中,访问权限分为三个级别:
- 公开 - 向世界开放
- 私人 - 只对班级开放
- 受保护 - 仅对类及其子类(继承)开放。
那么为什么 java 编译器允许这种情况发生呢?
TestBlah.java:
public class TestBlah {
public static void main(String[] args) {
Blah a = new Blah("Blah");
Bloo b = new Bloo("Bloo");
System.out.println(a.getMessage());
System.out.println(b.getMessage()); //Works
System.out.println(a.testing);
System.out.println(b.testing); //Works
}
}
Blah.java:
public class Blah {
protected String message;
public Blah(String msg) {
this.message = msg;
}
protected String getMessage(){
return(this.message);
}
}
Bloo.java:
public class Bloo extends Blah {
public Bloo(String testing) {
super(testing);
}
}
【问题讨论】:
-
还有包访问。这是没有修饰符的默认值。
-
你确定这是对的 - a.testing 和 b.testing 没有被声明。你是说 a.message 和 b.message 吗?
-
有四个访问级别。按设计工作。
-
我希望 Java 具有类似于 C++ 和 C# 的访问权限。为问题 +1
标签: java inheritance visibility protected access-levels