#Java 抽象クラスと抽象メソッドとは何ですか?
クラスの継承において、新しいサブクラスを一つずつ定義していくと、サブクラスはより具体的になり、親クラスはより汎用的で汎用性の高いクラス設計になります。親クラスと子クラスが特性を共有できるようにするために、親クラスが特定のインスタンスを持たないように、親クラスが非常に抽象的になるように設計されることがあります。このようなクラスは抽象クラスと呼ばれます。通常、クラスを設計して実行するときは、このクラスのインスタンスを作成する必要はありません。このクラスを抽象クラスとして設定し、そのサブクラスにこのクラスの抽象メソッドを実装させることを検討できます。
抽象クラス
abstract キーワードを使用してクラスを変更する場合、そのクラスは抽象クラスと呼ばれます。抽象クラスは、そのすべてのサブクラスのパブリック属性のコレクションと、1 つ以上の抽象メソッドを含むクラスです。
抽象クラスは、クラスをさらに抽象化したものとみなすことができます。オブジェクト指向の分野では、抽象クラスは主に型の隠蔽に使用されます。
抽象クラスの特徴:
(1) インスタンス化できない
(2) 抽象クラスにはコンストラクタがあります (すべてのクラスがコンストラクタを持ちます)
(3) ) 抽象メソッドが配置されるクラスは抽象クラスである必要があります (抽象メソッドにはメソッド本体がないためです。クラスが抽象クラスでない場合、クラスはオブジェクトをインスタンス化し、抽象メソッドを呼び出しても、メソッドを持たない可能性があります)具体的に実装すると矛盾します)
(4) 抽象クラスは抽象メソッドを持つことはできません
//抽象类 abstract class Person { String name; public Person(){}//抽象类的构造方法 public abstract void dink();//抽象方法,无{}方法体 public void eat(){ //非抽象方法 }; } class Student extends Person{ @Override public void eat() { System.out.println("吃饭"); } @Override public void dink() { System.out.println("喝水"); } }
抽象メソッド(抽象メソッド)
abstract によって変更されたメソッドは抽象メソッドであり、すべての抽象メソッドは抽象クラスに存在する必要があります。
抽象クラスで定義されたメソッドは抽象メソッドと呼ばれます。これらのメソッドにはメソッド ヘッダーの宣言のみがあり、セミコロンはメソッド本体の定義 (つまり、メソッドのインターフェイス形式のみ) を置き換えるのに使用されます。 member メソッドは具象操作なしで定義されます。
抽象メソッドの特徴:
(1) 形式、{ } を含むメソッド本体なし、例: public abstract void dink();
(2) 抽象メソッドメソッドの機能のみを保持し、具体的な実行は抽象クラスを継承したサブクラスに引き継ぎ、サブクラスが抽象メソッドを書き換える
(3) サブクラスが抽象クラスを継承して書き換える場合親クラスの抽象メソッドのすべての関数の場合、このサブクラスは抽象クラスではないためインスタンス化できます
(4) サブクラスが抽象クラスを継承し、親クラスのすべての抽象メソッドをオーバーライドしない場合、これは Abstract メソッドがあることを意味し、このサブクラスは abstract として宣言する必要があります。
上記の例では、Student サブクラスは抽象親クラスを継承し、eat() 抽象メソッドをオーバーライドします。ドリンク() 抽象メソッドをオーバーライドしない場合は、解決策は、 Drink() メソッドを書き直すか、 Student を抽象クラスに変えることです。
抽象クラスの使用シナリオ
抽象クラスは通常、多くのアプリケーションで使用されている状態の場合、より適用可能です
以上がJavaの抽象クラスと抽象メソッドが何であるか知っていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。