ホームページ >Java >&#&チュートリアル >オブジェクト指向プログラミングでスーパークラス変数からサブクラス メソッドにアクセスするにはどうすればよいですか?
スーパークラスからのサブクラス メソッドの呼び出し: 型の互換性について
オブジェクト指向プログラミングで継承を扱う場合、サブクラス固有のメソッドにアクセスするスーパークラス変数は難しい場合があります。これは、デフォルトでは、スーパークラス型として宣言された変数は、スーパークラス内に存在するパブリック メソッドとメンバー変数にのみアクセスできるためです。
これを説明するために、質問で提供されているコード例を考えてみましょう。ここでは、スーパークラス Pet が名前や年齢などの共通のプロパティとメソッドで定義されています。 3 つのサブクラス、Dog、Cat、および Bird は、Pet から継承し、動物の種類ごとに固有の特性とメソッドを導入しています。
Kennel メインクラス内で、ユーザーは次のことを試みますcat.getColor()、dog.getBreed()、bird.getWingspan() などのサブクラス固有のメソッドにアクセスします。 猫、犬、それぞれ鳥。ただし、cat、dog、および bird はスーパークラス Pet のインスタンスとして宣言されているため、これらのメソッドにはアクセスできません。
この問題を解決するには、次の 2 つの方法があります。オプション:
具体的なサブクラスとして変数を宣言 タイプ:
変数をサブクラスの特定のインスタンスとして宣言します。例:
Cat cat = new Cat("Feline", 12, "Orange"); Dog dog = new Dog("Spot", 14, "Dalmation"); Bird bird = new Bird("Feathers", 56, 12);
具体的なサブクラス型へのキャスト変数:
Castキャスト演算子を使用してスーパークラス変数を期待されるサブクラス型に変換する((()))。例:
Pet pet = new Cat("Feline", 12, "Orange"); Cat cat = (Cat) pet;
どちらのアプローチでも、それぞれの変数を介してサブクラス固有のメソッドとプロパティにアクセスできます。
Java では、変数の型によって、使用可能なメソッドとアクセスできるメンバー変数が決まります。変数を具体的なサブクラスとして宣言するか、変数を予期されるサブクラス型にキャストすることで、目的の機能に確実にアクセスできます。
以上がオブジェクト指向プログラミングでスーパークラス変数からサブクラス メソッドにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。