读书人

关于java访问控制符的有关问题

发布时间: 2012-03-04 11:13:34 作者: rapoo

关于java访问控制符的问题.
package father;

public class Father {
public String publicFatherString= "Father类的public成员变量 ";
protected String protectedFatherString= "Father类的protected成员变量 ";

public void publicFatherClassMethod() {
System.out.println( "Father类的public方法 ");
}

protected void protectedFatherClassMethod() {
System.out.println( "Father类的protected方法 ");
}
}
--------------------------------------
package children;
import father.Father;

public class Children extends Father{
public String publidChildString= "子类public成员变量 ";
protected String protectedChildString= "子类的protected成员变量 ";

public void publicChildClassMethod() {
System.out.println( "child类的public方法 ");
}

protected void protectedChildClassMethod() {
System.out.println( "child类的protected方法 ");
}
}

--------------------------------------
package children;
import father.Father;

public class Hello {
public void nihao() {
Children child = new Children();

//child.protectedFatherClassMethod();
上面被注释的方法无法在Hello类中看到.
Children类继承了Father类,当然也继承了Father类的
被保护的方法-protected void protectedFatherClassMethod()
换句话说Children类拥有Father类的
protected void protectedFatherClassMethod()方法,
Hello类与Children类在相同的包内(children),按照protected
的访问级别在Hello类中应该可以通过Clildren实例的引用执行
Father类的protected void protectedFatherClassMethod()方法.
实际的情况是不可以访问的.


小生谢谢,各位大侠了.


}
}


[解决办法]
public 成员变量和方法可以被它的直接子类和间接子类继承,可以跨包访问,

protected 成员变量和方法可以被它的直接子类和间接子类继承,但条件为同一包内。

[解决办法]
赞!
[解决办法]
private 只能在同一方法,或同一类中使用

[解决办法]
不在一个包中
[解决办法]
同一个类 子类同一个包所有类
public √ √ √ √
default √ √ √
protected √ √
private √

读书人网 >J2SE开发

热点推荐