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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-21 03:20:10137ブラウズ

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

スーパークラスからサブクラス メソッドへのアクセス

オブジェクト指向プログラミングでは、継承によりクラスが親クラスからプロパティと動作を継承できます。ただし、スーパークラス変数からサブクラスのメソッドにアクセスする場合、いくつかの制限が発生します。

次のコード スニペットを考えてみましょう。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。