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