スーパークラスからサブクラス メソッドへのアクセス
オブジェクト指向プログラミングでは、継承によりクラスが親クラスからプロパティと動作を継承できます。ただし、スーパークラス変数からサブクラスのメソッドにアクセスする場合、いくつかの制限が発生します。
次のコード スニペットを考えてみましょう。
abstract public class Pet { ... } public class Cat extends Pet { private String color; public String getColor() { ... } } public class Kennel { public static void main(String[] args) { Pet cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Compiler error: getColor() not defined in Pet } }
Kennel クラスで、Cat オブジェクトがPet 変数。Pet で定義されたメンバーのみがアクセス可能です。これには getName() や getAge() などのメソッドが含まれますが、getColor() は含まれません。
これを解決するには、2 つのオプションがあります:
1。変数をサブクラスとして宣言:
変数を特定のサブクラスとして宣言:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Valid, getColor() is defined in Cat
2.変数をサブクラスにキャストします:
変数を既知または予期されるサブクラスにキャストします:
Pet cat = new Cat("Feline", 12, "Orange"); ((Cat)cat).getColor(); // Valid, getColor() is accessible via casting
実装例:
は次のとおりですKennel クラスの修正バージョン:
public class Kennel { public static void main(String[] args) { Cat cat = new Cat("Feline", 12, "Orange"); System.out.println("Cat's color: " + cat.getColor()); } }
以上がJava でスーパークラス変数からサブクラス メソッドにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。