-3
2つのオブジェクトをイコライズするとどうなりますか?例えば;2つの異なるオブジェクトを均等化する
Person p = new Person();
Student s = new Student();
p=s;
(PersonクラスがStudentクラスの親である。)
私はp=s
を書くとき、なぜ私は、pからの学生の特別なメソッドを達成することはできませんか? (ダウンキャスティングのように)私はこの声明の働く仕組みは何か?
2つの異なるオブジェクトを「均等化」していません。作成された新しいPersonオブジェクトを破棄し、p変数の参照をStudentオブジェクトの参照に再割り当てします。コンパイラは、pがPerson変数であることだけを知っているので、Personメソッドだけを直接利用することができます。 Studentメソッドはそこにあり、pをStudentにキャストする場合にのみ利用できます: '((Student)p).studentMethod();'。あなたが間違ってキャストするなら、これには危険があります。 –
sへの参照はp〜を指しています – lpgad