Java で継承を使用する場合、スーパークラス参照を通じてサブクラス固有のメソッドにアクセスするときに問題が発生する可能性があります。
この問題は、変数がスーパークラス型を持つものとして宣言され、スーパークラス内でのみ定義されたメソッドとメンバー変数へのアクセスが制限される場合に発生します。たとえば、次のコードは問題を示しています。
Pet cat = new Cat("Feline", 12, "Orange"); cat.getName(); // This is allowed cat.getColor(); // This is not allowed (getColor() is not in Pet)
これを解決するには、いくつかのオプションがあります。
Cat cat = new Cat("Feline", 12, "Orange"); cat.getName(); // Allowed cat.getColor(); // Allowed
このアプローチでは、サブクラスのメソッドとメンバーに直接アクセスできます。 variables.
Pet cat = new Cat("Feline", 12, "Orange"); ((Cat)cat).getName(); // Allowed ((Cat)cat).getColor(); // Allowed
ここでは、前に変数 cat を Cat 型に明示的にキャストします。サブクラス固有のメソッドにアクセスします。
Pet pet = new Cat("Feline", 12, "Orange"); Cat cat = (Cat)pet; cat.getName(); // Allowed cat.getColor(); // Allowed
これは、利便性と明確さのために両方のメソッドを組み合わせています。
これらの手法を使用すると、スーパークラス参照からサブクラス メソッドを効果的に呼び出し、アクセスを確保できます。
以上がJava でスーパークラス参照を使用してサブクラス メソッドにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。