抽象的特徴:
- クラス内のメソッドにはメソッド本体がありません。メソッドにはメソッド本体があるか、抽象クラスとして定義されています。抽象メソッドは抽象クラスに含まれている必要があります。キーワードabstractを使用してください。
- 抽象クラスは必ずしも抽象メソッドを持っている必要はありませんが、抽象メソッドを持つクラスは抽象クラスでなければなりません
- 抽象クラスはインスタンス化できません。ポリモーフィズムを参照し、サブクラスオブジェクトを介してインスタンス化します。
- 抽象クラスのサブクラスは、抽象クラスであるか、抽象クラスメソッドをオーバーライドします。
抽象クラス:
public abstract class animal {
public abstract void eat();
}
ポリモーフィズムにより、サブクラスは親クラスのメソッドをオーバーライドします。
public class animalDemo extends animal{
public void eat() {
System.out.println("猫吃鱼");
}
}
抽象クラスメンバーの機能:
- メンバー変数は定数または変数にすることができます
- 構築メソッドはありますが、インスタンス化できません。サブクラスを初期化して親クラスのデータにアクセスするために使用されます。
- メンバーメソッド:抽象メソッドが存在する可能性があります:サブクラスが特定のアクションを完了する必要があることを制限します;非抽象メソッドが存在する可能性もあります:コードの再利用性を向上させます
インターフェイスの機能:
-
インターフェイスは、キーワードinterface:
public interface interface name {}で変更されます。 -
クラス実装インターフェースはimplementsを使用します----実装関係
パブリッククラスクラス名はインターフェース名を実装します{} -
インターフェイス自体は抽象クラスであり、インスタンス化できません。インターフェイスのインスタンス化はポリモーフィズムを使用し、その実装クラスはインスタンス化に使用されます。サブクラスは親クラスメソッドをオーバーライドする必要があります。
インターフェイスのメンバー特性:
-
メンバー変数:定数のみにすることができ、デフォルトの修飾子public static final
-
インターフェイスは主に動作を抽象化し、具体的な存在がないため、構築メソッドはあり
ません。クラスに親クラスがない場合、デフォルトでObjectクラスから継承されます
。Objectclass: public class Object
classObjectはのルートです。クラス階層であり、すべてのクラスにはスーパークラスとしてのオブジェクトがあります。
すべてのオブジェクト(配列を含む)はこのメソッドを実装します。
コンストラクター:Object(); -
メンバーメソッド:抽象メソッドのみ、デフォルトの修飾子:publc抽象
インターフェース:
public interface inter {
int num1=10;
final int num2=20;
//默认为public static final int num=15;
public abstract void method();
//接口中的方法默认带publc abstract
void show();
}
サブクラス継承インターフェイス:
- デフォルトの継承はObjectクラスであるため
public class interImpl implements inter
- したがって、次のように書くこともできます
public class interImpl extends Object implements inter
public class interImpl implements inter{
//等价于 public class interImpl extends Object implements inter{
public interImpl() {
super();
}
public void method() {
System.out.println("methos");
}
public void show() {
System.out.println("show ");
}
}
主な関数クラス
public class interDemo {
public static void main(String[] args) {
inter i=new interImpl();
//i.num1=15; 接口中的成员变量默认被final修饰,且是静态的
System.out.println(i.num1);
System.out.println(i.num2);
System.out.println(inter.num1);//是静态的
}
}