私は最近、Java を独学するために数冊の本を読んでいますが、幸いなことに、ほとんどが運のおかげで、ほとんど問題に遭遇しませんでした。それが変わったのです。
継承の下の次のセクションと、スーパークラスのサブクラスのセットアップ全体を読みました
-- 新しいスーパークラス オブジェクトが作成されると、すべてのオブジェクトと同様に参照 (この例では superReference) が割り当てられます。
-- 新しいサブクラス オブジェクト (スーパークラスを拡張するサブクラスを定義) が作成され、元のオブジェクトではなくそれを参照するように superReference 参照が設定されている場合、参照はスーパークラスに対して行われるため、それは私の理解です。 、スーパークラスによって定義されたメンバーのみがサブクラスからアクセスできます。
最初に - これは正しいですか?
2番目:メソッドをオーバーライドしているため、スーパーに1つ、サブに1つあり、スーパークラスオブジェクトを作成し、上記のようにその参照をサブクラスオブジェクトに割り当てます。動的などと呼ばれる原則によってメソッドディスパッチ、呼び出されたオーバーライドされたメソッドは、デフォルトでサブクラスメソッドにアクセスする必要がありますか?
さて、私の質問は次のとおりです。
スーパークラスオブジェクトへの参照がサブクラスオブジェクト用に作り直され、サブクラス定義メンバーへの object.member の直接アクセスを拒否し、スーパークラス定義メンバーのみをサポートする場合、スーパークラス参照がサブクラスオブジェクト用に作り直された場合、どうすればよいでしょうか? superclass-originated-reference によってアクセスが制限されている場合、オーバーライドされたメソッドがサブクラス オブジェクトに適用されます。