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

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

Linda Hamilton
リリース: 2024-12-21 03:20:10
オリジナル
138 人が閲覧しました

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

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