記法clone()
を使用してメソッドにアクセスできるのに、Object 型の新しいオブジェクトを作成してアクセスできないのはなぜですか。super.
たとえば、次のようなことをすると
Object obj = new Object();
次に (Eclipse を使用して)clone()
ドット演算子を使用してメソッドを表示できません。これは、obj がクラスの保護されたメンバーを表示できないことを示していますObject
(パブリック メソッドのみが表示されます)。
super
キーワード ie useを使用すると、super.
保護されたメソッドも表示できます。
したがって、私の質問は、他のクラスを明示的に継承 (拡張) しないクラスでは、オブジェクト クラス コンストラクターへの暗黙的な呼び出しを行うことを知っています。つまり、オブジェクト クラスはそのスーパークラスです。オブジェクトクラスのメンバーですが、オブジェクトクラスのインスタンスを作成しても同じことは達成されません(オブジェクトクラスのインスタンスにはパブリックメンバーのみが表示されます)?
これはより明確なコードです(意味はありませんが、最初の部分は準拠しており、他の部分は準拠していません):
public class temp {
public temp() {
// TODO Auto-generated constructor stub
TestBikes t1 = new TestBikes();
Object ob1 = new Object();
try {
t1 = (TestBikes)super.clone(); //SUPER KEYWORD IS ABLE TO ACCESS
//PROTECTED MEMBERS OF Object
//CLASS
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
t1 = (TestBikes)ob1.clone(); // HERE IS THE ERROR SAYING clone()
// FROM Object CLASS IS NOT VISIBLE
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}