class Person { void f() {} }
class Student extends Person { void f() {} }
したがって、次のコードを実行すると:
Person p = new Student();
((Person) p).f();
f()
変数が Person としてキャストされたときに Student クラスの関数が呼び出されるのはなぜですか? f()
だけのときに関数が呼び出される理由は理解していますがp.f()
、キャストが正確に何をするのか混乱しているだけだと思います。