第一种情况:子类继承的protected方法能被其他类调用,
前提:1.子类重写了父类的protected方法 2.子类和其他类在同一包下
子类Demo1
package com.hui;
public Demo1 (extend Object){//隐式继承
//重写了父类object的clone方法
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
其他类Demo2
package com.hui; //相同包
public Demo2{
public static void main(String[] args) throws Exception {
Demo1 d = new Demo1();
d.clone(); //clone() 可以被调用,依据:1.子类重写了父类的方法 2.子类和其他类在同一包下,缺一不可
}
}
第二种情况:子类继承的protected方法不能被其他类调用,
前提:1.子类没有重写object的clone()方法。
解释:不同包所以不能直接调用,object是在java.lang下,其他类Demo2是在com.hui包下的。
子类Demo1
package com.hui;
public Demo1 (extend Object){//隐式继承
//没有重写父类object的clone方法
}
其他类Demo2
package com.hui; //相同包
public Demo2{
public static void main(String[] args) throws Exception {
Demo1 d = new Demo1();
d.clone(); //clone()不能被调用
}
}