【发布时间】:2011-12-25 08:37:42
【问题描述】:
按照约定,Java 中的protected 类成员只能从声明它的类中或从它的直接后代继承类中访问。以下示例中的 protected 类成员,但是可以在不使用 Java 中的任何继承概念的情况下从其他类访问。
package classmembers;
final class Demo
{
private int a=10;
protected int b=20;
public int c=30;
public Demo(int a, int b, int c)
{
this.a=a;
this.b=b;
this.c=c;
}
protected void show()
{
System.out.println("a = "+a);
}
}
final public class Main
{
public static void main(String[] args)
{
Demo d=new Demo(10, 20, 30);
//System.out.print("\n"+d.a); Wrong, since a has private access
d.show(); //Working, even if it is protected
System.out.print("\n"+d.b); //Working, even if it is protected
System.out.print("\n"+d.c); //Working, since it is public, obviously
}
}
在本例中,protected 类成员 b 类型为 int 和方法 show() 在类 Demo 中声明 是通过 main() 方法访问的,即使它们被显式声明为 protected 并且没有使用任何继承概念。
在这种情况下,Java 中受保护的类成员和公共类成员有什么区别。他们是一样的吗?
【问题讨论】:
标签: java