protected访问权限又理解了一上

protected访问权限又理解了一下
看java的克隆时遇到问题 不能直接调用Object类的clone()方法,感觉很纳闷,提示方法不可见
  有查看了一下protected访问权限
  1同类 2同包 3 子类(不同包)
  明明子类也是可以的。一般的类都是默认继承object的,所以应该可以调用clone()方法
 
  第一、2条都好理解
  第3条子类中:应该具体解释为子类可以调用自己从父类中继承的父类的protected方法。但是还是不能调用父类自己的
  protected的方法,这里的父类是指父类实例。因为这样的话违反了第2条同包的原则。
  举个至简例子:

public class A extends Object{
	public static void main(String[] args) {
		A a = new A();
		try {
			/*
			 * protected方法(clone())从object继承而来,
			 * 这里是子类A自己已经用有clone()方法,所以可以调用
			 */
			a.clone();
		} catch (Exception e) {
			e.printStackTrace();
		}
		Object o = new Object();
		/*
		 * 这里的o是父类Object的实例,调用clone()会有编译错误,
		 * 虽然是在自己的子类中但是实例还是父类,他的调用权限最大还是在自己的包中,
		 * 即lang包
		 */
		o.clone();//The method clone() from the type Object is not visible
	}
}
1 楼 eve 2011-06-30  
这个还真没注意,8错