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

Java 抽象クラスと抽象メソッド

Java 抽象クラスと抽象メソッド

このチュートリアルでは、例を使用して Java の抽象クラスとメソッドについて学習します。 Java の抽象化についても学びます。

Java 抽象クラス

Java の抽象クラスはインスタンス化できません (抽象クラスのオブジェクトを作成することはできません)。 abstract を使用します 抽象クラスを宣言するキーワード。たとえば、

// create an abstract class
abstract class Language {
  // fields and methods
}
...

// try to create an object Language
// throws an error
Language obj = new Language(); 

抽象クラスは、通常のメソッドと抽象メソッドの両方を持つことができます。たとえば、

abstract class Language {

  // abstract method
  abstract void method1();

  // regular method
  void method2() {
    System.out.println("This is regular method");
  }
}

非抽象メソッドについては、Java メソッドを参照してください。ここでは、抽象メソッドについて学びます。


Java 抽象メソッド

本体を持たないメソッドは、抽象メソッドとして知られています。同じ abstract を使用します 抽象メソッドを作成するためのキーワード。たとえば、

abstract void display();

ここでは、display() 抽象メソッドです。 display() の本体 ; に置き換えられます .

クラスに抽象メソッドが含まれる場合、そのクラスは抽象として宣言する必要があります。そうしないと、エラーが発生します。たとえば、

// error
// class should be abstract
class Language {

  // abstract method
  abstract void method1();
}

例:Java 抽象クラスとメソッド

抽象クラスはインスタンス化できませんが、そこからサブクラスを作成できます。次に、サブクラスのオブジェクトを使用して抽象クラスのメンバーにアクセスできます。たとえば、

abstract class Language {

  // method of abstract class
  public void display() {
    System.out.println("This is Java Programming");
  }
}

class Main extends Language {

  public static void main(String[] args) {
    
    // create an object of Main
    Main obj = new Main();

    // access method of abstract class
    // using object of Main class
    obj.display();
  }
}

出力

This is Java programming

上記の例では、Language という名前の抽象クラスを作成しました。 .クラスには通常のメソッド display() が含まれています .

抽象クラスを継承する Main クラスを作成しました。声明に注目してください、

obj.display();

ここで、obj 子クラス Main のオブジェクトです .オブジェクト obj を使用して抽象クラスのメソッドを呼び出しています .


抽象メソッドの実装

抽象クラスに抽象メソッドが含まれている場合、抽象スーパークラスから継承されたすべての子クラスは、抽象メソッドの実装を提供する必要があります。たとえば、

abstract class Animal {
  abstract void makeSound();

  public void eat() {
    System.out.println("I can eat.");
  }
}

class Dog extends Animal {

  // provide implementation of abstract method
  public void makeSound() {
    System.out.println("Bark bark");
  }
}

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

    // create an object of Dog class
    Dog d1 = new Dog();

    d1.makeSound();
    d1.eat();
  }
}

出力

Bark bark
I can eat.

上記の例では、抽象クラス Animal を作成しました。 .クラスには抽象メソッド makeSound() が含まれています および非抽象メソッド eat() .

サブクラス Dog を継承しました スーパークラス Animal から .ここでは、サブクラス Dog 抽象メソッド makeSound() の実装を提供します .

次に、オブジェクト d1 を使用しました の メソッド makeSound() を呼び出すクラス および eat() .

注意 :なら クラスは抽象メソッド makeSound() の実装を提供しません 、 また、abstract として宣言する必要があります。これは、サブクラス DogmakeSound() を継承 動物から .


抽象クラスのコンストラクターにアクセスします

抽象クラスは、通常のクラスと同様にコンストラクタを持つことができます。そして、super を使用して、サブクラスから抽象クラスのコンストラクターにアクセスできます。 キーワード。たとえば、

abstract class Animal {
   Animal() {
      ….
   }
}

class Dog extends Animal {
   Dog() {
      super();
      ...
   }
}

ここでは、super() を使用しました。 Dog のコンストラクタ内 Animal のコンストラクタにアクセスする .

super に注意してください 常にサブクラス コンストラクターの最初のステートメントにする必要があります。詳細については、Java スーパー キーワードにアクセスしてください。


Java の抽象化

抽象クラスとメソッドの主な用途は、Java で抽象化を実現することです。

抽象化はオブジェクト指向プログラミングの重要な概念であり、不要な詳細を隠して必要な情報だけを表示することができます。

これにより、よりシンプルで高レベルのアイデアで詳細を省略または非表示にすることで、複雑さを管理できます。

抽象化の実用的な例は、バイクのブレーキです。私たちはブレーキが何をするかを知っています。ブレーキを踏むとバイクが止まります。ただし、ブレーキの働きは私たちには隠されています。

ブレーキの動作を隠すことの主な利点は、メーカーがバイクごとに異なるブレーキを実装できるようになったことですが、ブレーキの機能は同じです。

Java の抽象化をよりよく理解するのに役立つ例を見てみましょう。

例 3:Java の抽象化

abstract class MotorBike {
  abstract void brake();
}

class SportsBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("SportsBike Brake");
  }
}

class MountainBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("MountainBike Brake");
  }
}

class Main {
  public static void main(String[] args) {
    MountainBike m1 = new MountainBike();
    m1.brake();
    SportsBike s1 = new SportsBike();
    s1.brake();
  }
}

出力 :

MountainBike Brake
SportsBike Brake

上記の例では、抽象スーパー クラス MotorBike を作成しました。 .スーパークラス MotorBike 抽象メソッド brake() を持っています .

brake() MotorBike 内でメソッドを実装することはできません .これは、バイクごとにブレーキの実装が異なるためです。つまり、MotorBike のすべてのサブクラス brake() の実装が異なります .

したがって、brake() の実装は バイクで は隠されています。

ここで、MountainBike brake() の独自の実装を作成します そしてスポーツバイク brake() の独自の実装を作成します .

注意 :Java で抽象化を実現するためにインターフェイスを使用することもできます。詳細については、Java インターフェースをご覧ください。


覚えておくべき重要なポイント


Java

  1. C# の抽象クラスとメソッド
  2. Java 変数とリテラル
  3. Java クラスとオブジェクト
  4. Java 最終キーワード
  5. オペレーターの Java インスタンス
  6. Java のネストされた内部クラス
  7. Java ネストされた静的クラス
  8. Java匿名クラス
  9. Java シングルトン クラス
  10. Java ObjectOutputStream クラス
  11. Javaジェネリック