簡體   English   中英

如果所有類都擴展了對象,為什么它們都不能調用clone

[英]If all class extends object why can't they all call clone

class Main
{
    public static void main(String[] args)
    {
        new Cloned().clone();
    }
}
class Cloned implements Cloneable {}

這給出了一個錯誤,說它受到保護。 不能對象的任何子類調用該方法。

因為clone()是Object類中的protected方法

如果你想公開訪問clone() ,你需要在你的類中重寫該方法。

@override
public Object clone()
{
    return super.clone();
}

這里的問題是Main不會擴展Cloned 就目前而言, Main可以調用Main.clone ,但不能調用Cloned.clone

clone方法在Object中聲明的事實在這里無關緊要。 除了公共方法之外,類只能調用自己的繼承方法 這包括來自其超類的受保護的,但不包括其他(超級)類的受保護方法。

    class Main implements Cloneable
    {
         public static void main(String[] args)
    {

    }


       @Override
    protected Object clone() throws CloneNotSupportedException {
        // TODO Auto-generated method stub
        return super.clone();
    }


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM