工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java 継承

Java 継承

このチュートリアルでは、例を使って Java の継承とその型について学びます。

継承は、既存のクラスから新しいクラスを作成できる OOP の重要な機能の 1 つです。

作成された新しいクラスは、サブクラスと呼ばれます (子クラスまたは派生クラス) であり、子クラスの派生元である既存のクラスは スーパークラス と呼ばれます (親または基本クラス)。

extends キーワードは、Java で継承を実行するために使用されます。たとえば、

class Animal {
  // methods and fields
}

// use of extends keyword
// to perform inheritance
class Dog extends Animal {

  // methods and fields of Animal
  // methods and fields of Dog
}

上記の例では、 クラスは Animal からメソッドとフィールドを継承して作成されます クラス。

ほら、 はサブクラスであり、動物 はスーパークラスです。


例 1:Java 継承

class Animal {

  // field and method of the parent class
  String name;
  public void eat() {
    System.out.println("I can eat");
  }
}

// inherit from Animal
class Dog extends Animal {

  // new method in subclass
  public void display() {
    System.out.println("My name is " + name);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // access field of superclass
    labrador.name = "Rohu";
    labrador.display();

    // call method of superclass
    // using object of subclass
    labrador.eat();

  }
}

出力

My name is Rohu
I can eat

上記の例では、サブクラス Dog を派生させました。 スーパークラス Animal から .ステートメントに注意してください、

labrador.name = "Rohu";

labrador.eat();

ほら、ラブラドール のオブジェクトです .ただし、名前eat() 動物のメンバーです クラス。

以来 Animal からフィールドとメソッドを継承します 、 Dog のオブジェクトを使用してフィールドとメソッドにアクセスできます .

<図>

関係

Java では、継承は is-a です 関係。つまり、2 つのクラス間に is-a 関係が存在する場合にのみ継承を使用します。たとえば、

こちら、 Vehicle から継承できます 、オレンジ フルーツから継承できます などです。


Java 継承でのメソッドのオーバーライド

例 1 、サブクラスのオブジェクトがスーパークラスのメソッドにアクセスできることがわかります.

ただし、スーパークラスとサブクラスの両方に同じメソッドが存在する場合はどうなりますか?

この場合、サブクラスのメソッドがスーパークラスのメソッドをオーバーライドします。この概念は、Java ではメソッドのオーバーライドとして知られています。

例 2:Java 継承でのメソッドのオーバーライド

class Animal {

  // method in the superclass
  public void eat() {
    System.out.println("I can eat");
  }
}

// Dog inherits Animal
class Dog extends Animal {

  // overriding the eat() method
  @Override
  public void eat() {
    System.out.println("I eat dog food");
  }

  // new method in subclass
  public void bark() {
    System.out.println("I can bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // call the eat() method
    labrador.eat();
    labrador.bark();
  }
}

出力

I eat dog food
I can bark

上記の例では、eat() メソッドは両方のスーパークラス Animal に存在します サブクラス Dog .

ここでは、オブジェクト labrador を作成しました。 の .

eat() を呼び出すと、 オブジェクト labrador を使用して 、Dog 内のメソッド と呼ばれます。これは、派生クラス内のメソッドが基本クラス内のメソッドをオーバーライドするためです。

これは、メソッドのオーバーライドと呼ばれます。詳細については、Java メソッドのオーバーライドをご覧ください。

注意 :@Override を使用しました メソッドをオーバーライドしていることをコンパイラに伝えるアノテーション。ただし、注釈は必須ではありません。詳細については、Java アノテーションにアクセスしてください。


Java 継承の super キーワード

前に、サブクラスの同じメソッドがスーパークラスのメソッドをオーバーライドすることを見てきました.

このような状況では、super キーワードは、子クラスのメソッドから親クラスのメソッドを呼び出すために使用されます。

例 3:継承の super キーワード

class Animal {

  // method in the superclass
  public void eat() {
    System.out.println("I can eat");
  }
}

// Dog inherits Animal
class Dog extends Animal {

  // overriding the eat() method
  @Override
  public void eat() {

    // call method of superclass
    super.eat();
    System.out.println("I eat dog food");
  }

  // new method in subclass
  public void bark() {
    System.out.println("I can bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // call the eat() method
    labrador.eat();
    labrador.bark();
  }
}

出力

I can eat
I eat dog food
I can bark 

上記の例では、eat() メソッドは、基本クラス Animal の両方に存在します 派生クラス Dog .声明に注目してください、

super.eat();

ここでは、super キーワードは eat() を呼び出すために使用されます スーパークラスに存在するメソッド。

super も使用できます サブクラスのコンストラクターからスーパークラスのコンストラクターを呼び出すキーワード。詳細については、Java スーパー キーワードをご覧ください。


継承の保護されたメンバー

Java では、クラスに protected が含まれている場合 フィールドとメソッドの場合、これらのフィールドとメソッドはクラスのサブクラスからアクセスできます。

例 4:継承された保護されたメンバー

class Animal {
  protected String name;

  protected void display() {
    System.out.println("I am an animal.");
  }
}

class Dog extends Animal {

  public void getInfo() {
    System.out.println("My name is " + name);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // access protected field and method
    // using the object of subclass
    labrador.name = "Rocky";
    labrador.display();

    labrador.getInfo();
  }
}

出力

I am an animal.
My name is Rocky

上記の例では、Animal という名前のクラスを作成しました。クラスには保護されたフィールドが含まれています:name およびメソッド:display() .

を継承しました クラスは Animal を継承します .声明に注目してください、

labrador.name = "Rocky";
labrador.display();

ここでは、labrador を使用してスーパークラスの保護されたフィールドとメソッドにアクセスできます。 サブクラスのオブジェクト。


継承を使用する理由


継承の種類

継承には 5 つのタイプがあります。

1.単一継承

単一継承では、単一のサブクラスが単一のスーパークラスから継承されます。たとえば、

<図>

2.マルチレベル継承

マルチレベル継承では、サブクラスがスーパークラスから拡張され、同じサブクラスが別のクラスのスーパークラスとして機能します。たとえば、

<図>

3.階層的継承

階層継承では、複数のサブクラスが 1 つのスーパークラスから拡張されます。たとえば、

<図>

4.多重継承

多重継承では、1 つのサブクラスが複数のスーパークラスから拡張されます。たとえば、

<図>

注意 :Java は多重継承をサポートしていません。ただし、インターフェイスを使用して多重継承を実現できます。詳細については、Java が多重継承を実装するを参照してください。


5.ハイブリッド継承

ハイブリッド継承は、2 種類以上の継承の組み合わせです。たとえば、

<図>

ここでは、階層継承と多重継承を組み合わせてハイブリッド継承を形成しています。


Java

  1. C# 継承
  2. Java 最終キーワード
  3. オペレーターの Java インスタンス
  4. Java ネストされた静的クラス
  5. Java匿名クラス
  6. Java シングルトン クラス
  7. Java リフレクション
  8. Java ObjectOutputStream クラス
  9. Javaジェネリック
  10. Java ファイル クラス
  11. C# - 継承