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