ホームページ > Java > &#&チュートリアル > 継承でスーパークラス変数からサブクラス メソッドにアクセスするにはどうすればよいですか?

継承でスーパークラス変数からサブクラス メソッドにアクセスするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-03 21:27:12
オリジナル
919 人が閲覧しました

How Can I Access Subclass Methods from a Superclass Variable in Inheritance?

継承の障害の克服: スーパークラスからサブクラス メソッドへのアクセス

継承の旅を始めると、メソッドへのアクセスで課題に遭遇するのが一般的です。サブクラスに固有。これらのハードルを解決するために、関係する概念を詳しく調べて、制限を回避する方法を見つけてみましょう。

変数の型指定とメソッドの可用性

変数を型として宣言するときスーパークラスのメソッドとメンバー変数へのアクセスを制限します。次の例を考えてみましょう。

Pet cat = new Cat("Feline", 12, "Orange");
cat.getName(); // this is OK
cat.getColor(); // this is not OK, getColor() is not in Pet
ログイン後にコピー

変数 cat は Pet 型として宣言されているため、Pet クラスで定義されたメソッドのみにアクセスできます。 Cat サブクラスの getColor() など、サブクラスに固有のメソッドにアクセスするには、変数をサブクラス型として明示的に宣言するか、変数をその型にキャストする必要があります。

具象型へのキャスト

変数を具体的なサブクラス型として宣言するには、変数を次のように変更します。

Cat cat = new Cat("Feline", 12, "Orange");
cat.getName(); // OK, getName() is part of Cat (and the superclass)
cat.getColor(); // OK, getColor() is part of Cat
ログイン後にコピー

これで、変数 cat は getColor() を含む Cat クラスのすべてのメソッドにアクセスできるようになります。

動作中の変数キャスト

正確なサブクラスがわからない場合は、変数を具象型にキャストすることもできますtype:

Pet pet = new Cat("Feline", 12, "Orange");
Cat cat = (Cat)pet;
cat.getName(); // OK
cat.getColor(); // OK
ログイン後にコピー
ログイン後にコピー

キャストすると、変数を正確なサブタイプとして宣言しなくても、指定したサブクラスのメソッドにアクセスできます。

メソッドの結合

最初にスーパークラス型の変数を宣言し、次にそれを具体的な変数にキャストすることで、2 つのアプローチを組み合わせることもできます。 type:

Pet pet = new Cat("Feline", 12, "Orange");
Cat cat = (Cat)pet;
cat.getName(); // OK
cat.getColor(); // OK
ログイン後にコピー
ログイン後にコピー

これらの手法を利用すると、変数の型指定による制限を回避したり、サブクラスに固有のメソッドにアクセスしたりでき、継承の力を最大限に活用できます。

以上が継承でスーパークラス変数からサブクラス メソッドにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート