class Parent implements Cloneable{
int i ;
Parent(){
}
Parent(int i){
this.i = i;
}
public Object clonemyobj() throws CloneNotSupportedException{
return this.clone();
}
protected Object cloneme() throws CloneNotSupportedException {
return this.clone();
}
}
class Child extends Parent{
}
public class CloneDemo{
public static void main(String... ar) throws CloneNotSupportedException
{
Parent p = new Parent(10);
Object o1 = p.cloneme();
// 1. cloneme() is a protected method in parent class i am able to access it
//Object o2 = p.clone();
// 2. the above line shows clone() has protected access in java.lang.object
// but that should be the same with cloneme() method in parent class
// why?
Object o = new Object();
Child c = new Child();
//3. o.clone();
c.cloneme();
//4.(c.cloneme()) is a protected method in parent class
// but still able to access it using child class object
}
}
以上所有课程都在同一个课程中。
答案 0 :(得分:0)
protected
方法可以在同一个类及其子类中访问,也可以在同一个包中使用类。由于您的类不在java.lang
包中,因此只能为您自己的类及其子类的对象访问clone
java.lang.Object
方法。
相比之下,protected
中声明的Parent
方法可以从CloneDemo
访问,因为Parent
和CloneDemo
位于同一个包中。
但请注意,您可以覆盖 clone()
方法,即如果您添加
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
到Parent
,您没有更改语义,但Parent.clone()
现在可以从CloneDemo
访问,Parent
与CloneDemo
位于同一个包中。因此,clone()
现在可以在Parent
和Child
的实例上调用 <ListView x:Name="listView" Margin="0,39,0,0">
<ListView.View>
<GridView x:Name="gridView"/>
</ListView.View>
</ListView>
。