0

clone()クラスで宣言されたメソッドObjectが保護されており、Object(すべてのクラスである) のすべてのサブクラスがここでアクセスできることが わかっているので、私の質問が喚起されます。

私が書く場合:

String str1 = "clone";  
String str2 = str1.clone();

コンパイラはこれをエラーとしてフラグ付けします。Stringオーバーライドしないclone()ため、このメソッドはlangパッケージでのみアクセスできます(このクラスがオーバーライドclone()されている場合、パッケージの外部からアクセスできるようにパブリックにする必要があり、保護されている場合はlangパッケージでアクセスできます)。右?ただし、このフラグメントはコンパイル エラーにフラグを立てません。

Point p1 = new Point();  
Point p2 = p1.clone();

なぜ?
両方StringとクラスはメソッドをPointオーバーライドしませんが、メソッドはオブジェクトを介してアクセスできます。clone()clone()Point

4

2 に答える 2