您的位置:首页 > 其它

子类和父类中方法和变量访问权限

2007-01-19 23:24 218 查看
1。一个覆写方法的访问修饰符所提供的访问权限与被覆写方法的访问修饰符所提供的访问权限相比,至少要
一样多
2。但是。对一个域来说,当它要隐藏另一个域时,如果隐藏域的访问修饰符提供的访问权限比被隐藏域的少,
尽管这么做不可取的,但是它确实是合法的

class Base
{
 public String className = "Base";
 public void pr()
 {
  
 }
}

class Derived extends Base
{
 private String className = "Derived";//尽管变量可见性小了,但是却是合法的,因为这个时候,子类
//并没有从父类继承className变量,而是隐藏了父类的同名方法
 
/*下面这个就不能运行
private void pr()
 {
 
 }
*/
}

public class PrivateClass
{
 public static void main(String[ ] args)
 {
  System.out.println(((Base)new Derived()).className);
 }
 } 

尽管Base 有一个公共域className,但是这个域没有被继承到Derived 类中,因为它被Derived.className
隐藏了。但是通过强制类型转换也可以访问到父类被隐藏的方法。

需要说明的是如果子类有一个pr()方法,父类也有一个pr()方法,你生存了子类的一个实例,但是你企图用强制类型转换来让它调用父类的方法,这个是做不到的(除了在子类内部,通过使用super 关键字方法)。然而被隐藏的变量却是可以的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string class