抽象クラス:
1. 1 つ以上の抽象メソッドを含むクラス自体は、抽象として宣言される必要があります。
2. 抽象メソッドに加えて、抽象クラスには具象データと特定のメソッドも含めることができます
3. 抽象クラスを拡張するための 2 つのオプション (抽象メソッドの具体的な実装はサブクラスにあります):
A. 抽象クラスで定義します。一部の抽象クラスが存在するか、抽象クラスのメソッドが定義されていないため、サブクラスも抽象クラスとしてマークする必要があります。
B. サブクラスが抽象にならないように、すべての抽象メソッドを定義します
4. 直接インスタンス化することはできませんが、間接的に使用することはできます
5. クラスが抽象クラスを継承する場合、クラスはその宣言を実装する必要があります抽象クラス 抽象メソッド
実装されていない場合は、自分自身を抽象クラスとして宣言する必要があります (これは質問かもしれません)
JDK8 のインターフェイスの新機能について話しましょう:
インターフェイスは次のことを行うことができます抽象的なメソッドのみを使用するようになりましたが、静的または非静的である特定のメソッドを追加できます。非静的メソッドの前にキーワードdefaultを使用します。
静的メソッドはソケットによってのみ参照でき、非静的メソッドは実装クラスによってインスタンス化されたオブジェクトによってのみ参照できます。したがって、2 つのインターフェースの静的メソッド名が同じである場合は、問題はなく、インターフェースのクラス名によってのみ参照できます。。非静的メソッドでは問題が発生します。これは、オブジェクトがどのインターフェイス メソッドを使用するかを認識していないためであり、コンパイルが失敗する可能性があります。
以下はコードのデモです
package 面向对象;//JDK8的接口新特性。interface A {public abstract void hehe();//传统抽象方法public static void haha()//静态方法 { System.out.println("haha"); }public default void lala() { System.out.println("lala");//非静态要加关键字default } }public class Test implements A {public static void main(String[] args)//因为不是抽象的所以可以重写也可以直接使用。 { A.haha();//不能被Test调用new Test().lala();//非静态要创建实例使用 } }
魔法は、抽象メソッドが存在し、サブクラスが抽象メソッドをオーバーライドせず、仮想マシンがエラーを報告しないことです。これは、インターフェイスが機能していないことを示しますデフォルトの抽象メソッドを記述する必要があります。
以上がJavaの抽象クラスインスタンスの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。