オブジェクト指向 (final キーワード、インターフェイス)

1.最後のキーワード

プロパティ (メンバー変数)、メソッド、クラスを宣言するために使用されます。

1.1最終的な属性の割り当て

  • 宣言と同時に値を割り当てます。多くの場合、static と併用されます (使用後、メソッド領域にはコピーが 1 つだけ存在します)。
  • 宣言時に値は代入されず、コンストラクタ内で一つずつ値を代入する必要があります。
  • 各オブジェクトを作成するとき、最終的な属性の値が正しい

1.2最終修正

パラメーターに最終的な変更を加える: メソッドのパラメーターの前に Final キーワードを追加して、メソッド本体内のデータが変更されないようにします。

例:

//final 修饰的类不可以被继承
public class FinalDemo {
    //final+static 修饰的在方法区是唯一的
    final static int num = 0;
    final String name;
//每次创建的name都是唯一的
    public FinalDemo(String name) {
        this.name = name;
    }
    //final修饰的方法不可以重写
    public final void first(){
        System.out.println("我就是我,不一样的烟花");
    }
    public static void main(String[] args) {
      FinalDemo finalDemo =  new FinalDemo("小黑子");
        System.out.println("我是"+finalDemo.name);
    }
}
public class Final1 extends FinalDemo{

    public Final1(String name) {
        super(name);
    }
}
public class Test {
    public static void main(String[] args) {
        FinalDemo finalDemo = new FinalDemo("鸡哥");
        System.out.println("我的名字是"+finalDemo.name);
        finalDemo.first();
        Final1 final1 = new Final1("小红");
        System.out.println("我的名字是"+final1.name);
        final1.first();
    }
}

結果:

 

2. インターフェース

2.1 インターフェースの定義

インターフェイスの定義: インターフェイスを宣言するには、interface キーワードを使用します。

[アクセス修飾子] インターフェイス インターフェイス名 [他のインターフェイス名 1,….他のインターフェイス名 n を拡張]

{

// 定数抽象メソッド、静的メソッド、デフォルトメソッドを宣言

}

2.2 インターフェースの使用

クラスは、implements キーワードを使用してインターフェイスを実装します。クラス宣言では、Implements キーワードはクラス宣言の後に配置されます。

[アクセス修飾子] class クラス名はインターフェイス名 1、インターフェイス名 2...{ } を実装します。

結合された継承:

[アクセス修飾子] class クラス名は親クラス名を拡張し、インターフェイス名 1、インターフェイス名 2...{ } を実装します。

2.3 インターフェースの特徴

インターフェイスの特性:

• インターフェイスは暗黙的に抽象であるため、インターフェイスを宣言するときに、abstract キーワードを使用する必要はありません。

• インターフェース内のメソッドは抽象、静的、またはデフォルトにすることができます。

• インターフェイスで宣言されたプロパティは、デフォルトでは public static Final です。

• インターフェイスはクラスによって継承されませんが、クラスによって実装されます。

• インターフェイスはオブジェクトをインスタンス化できません。

• 継承と同様に、インターフェイスと実装クラスの間にポリモーフィズムが存在します。

• インターフェイスは他の複数のインターフェイスを継承できます。

• クラスがインターフェイスを実装する場合、クラスはインターフェイス内のすべての抽象メソッドを実装する必要があります。それ以外の場合は、クラスを抽象として宣言する必要があります

例:

public class Animal {
    String name;
    int age;
    public void eat(){
    }
}
public interface Run {
     void run();
}
public interface Swim {
     void swim();
     public default void test1(){
          //创建默认方法
          System.out.println("默认方法");
     }
     public static void test2(){
          System.out.println("静态方法");
     }
}
public class Cat extends Animal implements Run,Swim {
    @Override
    public void run() {
        System.out.println("小猫会跑");
    }

    @Override
    public void swim() {
        System.out.println("小猫会游泳");
    }
}
public class Cow implements Run {

    @Override
    public void run() {
        System.out.println("哞儿~,快跑");
    }
}
public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.age=18;
        System.out.println(cat.age);
        cat.name="咪咪";
        System.out.println(cat.name);
        cat.eat();
        cat.run();
        cat.swim();
        Run run = new Cat();
        run.run();
        Swim swim = new Cat();
        swim.swim();
        Swim.test2();
        //静态方法通过接口名访问
        cat.test1();
        //默认方法通过子类创建的对象访问
    }
}

おすすめ

転載: blog.csdn.net/weixin_69778508/article/details/130592681