ホームページ >Java >&#&チュートリアル >実践例を通じて Java の継承を理解する

実践例を通じて Java の継承を理解する

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-03 16:35:42175ブラウズ

実践例を通じて Java の継承を理解する

継承は、あるクラスが別のクラスのプロパティ (属性とメソッド) を取得できるようにするオブジェクト指向プログラミング (OOP) の中核概念です。 Java では、継承は extends キーワードを使用して実装され、「is-a」関係を表します。この記事では、Java の継承を実際の例を通して説明します。

コード例

// Defining a class
class Animal {
    // General attributes
    protected String colour;
    protected String breed;
    protected int age;

    // General methods
    public String sleep() {
        return "Both cats and dogs sleep";
    }

    public String eat() {
        return "They also eat";
    }

    // Constructor
    public Animal(String colour, String breed, int age) {
        this.colour = colour;
        this.breed = breed;
        this.age = age;
    }

    // Getters and setters
    public String getColour() {
        return colour;
    }

    public void setColour(String colour) {
        this.colour = colour;
    }

    public String getBreed() {
        return breed;
    }

    public void setBreed(String breed) {
        this.breed = breed;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

// Cat class inheriting from Animal class
class Cat extends Animal {
    private String catName;

    public Cat(String colour, String breed, int age, String catName) {
        super(colour, breed, age); // Call the parent class constructor
        this.catName = catName;
    }

    public String getCatName() {
        return catName;
    }

    public void setCatName(String catName) {
        this.catName = catName;
    }

    public String catSound() {
        return "Cat meows!";
    }
}

// Dog class inheriting from Animal class
class Dog extends Animal {
    private String dogName;

    public Dog(String colour, String breed, int age) {
        super(colour, breed, age);
    }

    public String getDogName() {
        return dogName;
    }

    public void setDogName(String dogName) {
        this.dogName = dogName;
    }

    public String dogSound() {
        return "Dog barks!";
    }
}

public class Demo {
    public static void main(String[] args) {
        Cat myCat = new Cat("Brown", "Persian", 2, "Tom");
        Dog myDog = new Dog("Black", "Labrador", 3);

        // Display Cat details
        System.out.println("Cat's Name: " + myCat.getCatName());
        System.out.println("Cat's Colour: " + myCat.getColour());
        System.out.println("Cat's Breed: " + myCat.getBreed());
        System.out.println("Cat's Age: " + myCat.getAge());
        System.out.println("Cat Sound: " + myCat.catSound());
        System.out.println("Cat Behavior: " + myCat.eat() + " and " + myCat.sleep());

        // Display Dog details
        System.out.println("Dog's Colour: " + myDog.getColour());
        System.out.println("Dog's Breed: " + myDog.getBreed());
        System.out.println("Dog's Age: " + myDog.getAge());
        System.out.println("Dog Sound: " + myDog.dogSound());
    }
}

コードの主要な概念

親クラス (動物):

  • すべての動物に共有される共通の属性 (色、品種、年齢) と方法 (睡眠、食事) を定義します。
  • これらの属性を初期化するコンストラクターを提供します。
  • カプセル化のためのゲッターとセッターが含まれています。

子供クラス(猫と犬):

Understanding Inheritance in Java Through a Practical Example
Understanding Inheritance in Java Through a Practical Example

  • Animal クラスを拡張し、その属性とメソッドを継承します。
  • 特定の属性 (catName、dogName) と動作 (catSound、dogSound) を追加します。
  • super キーワードを使用して、親クラスのコンストラクターを呼び出し、継承された属性を初期化します。

デモクラス:

  • プログラムのエントリポイントとして機能します。
  • Cat クラスと Dog クラスのオブジェクトを作成し、それらのプロパティとメソッドにアクセスする方法を示します。

相続のメリット

  • コードの再利用性: Cat クラスと Dog クラスは、Animal クラスのコードを再利用します。
  • 拡張性: Animal クラスを拡張することで、新しい子クラス (Bird、Fish など) を簡単に追加できます。
  • ポリモーフィズム: sleep や Eat などの共有メソッドを子クラスでオーバーライドして、特定の動作を提供できます。

プログラムの出力

Cat's Name: Tom
Cat's Colour: Brown
Cat's Breed: Persian
Cat's Age: 2
Cat Sound: Cat meows!
Cat Behavior: They also eat and Both cats and dogs sleep
Dog's Colour: Black
Dog's Breed: Labrador
Dog's Age: 3
Dog Sound: Dog barks!

私の GitHub
Java リポジトリ

以上が実践例を通じて Java の継承を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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