Javaの基礎14オブジェクト指向〜インターフェースと内部クラス

プログラミングが好きなあなたのように!
SpringBoot実用的なコースは学習https://edu.csdn.net/course/detail/31433
SpringCloud入門コースを学びhttps://edu.csdn.net/course/detail/31451を


オブジェクト指向シリーズ:
クラスとオブジェクトの
カプセル化は、ポリモーフィック静的キーワードとシングルトンモードインターフェイスおよび内部クラスを
継承します


序文

みなさん、こんにちは。インターフェースはJavaの重要なタイプです。実際のプロジェクト開発では、インターフェース指向プログラミングと呼ばれる多数のインターフェースが使用されます。この章では、インターフェースと内部クラスに焦点を当てます。

インターフェース

インターフェースとは

ここに写真の説明を挿入

コンピュータのUSBインターフェースなど、生活の中でのインターフェースは、インターフェースの形状とサイズを調整します。デバイスが標準を満たしている限り、接続できます。

プログラム内のインターフェースは、インターフェース
を実装するクラスがインターフェースの仕様に従って定義されなければならない限り、メソッドの定義を規定する一連の仕様です。

インターフェースを使用する

インターフェイスを定義するための構文:

public interface 接口名{
	静态常量的定义;
	方法的定义;
}

インターフェイスを定義するときの注意:

  1. この方法は抽象的であり、実現することはできません
  2. 定義されたプロパティは自動的に静的定数に変換されます
  3. メソッドはパブリックのみにすることができ、デフォルトはパブリックです

インターフェイスを実装する

public class 类名 implements 接口名{
	具体方法的实现
}

インターフェイスの実装に注意してください。

  1. インターフェイスのすべてのメソッドを実装する必要があります
  2. メソッドは、インターフェースで定義されているものとまったく同じである必要があります
  3. メソッドは公開する必要があります
  4. クラスは複数のインターフェースを実装できます
  5. クラスは、インターフェイスの実装中にクラスを継承できます
class 类名 extends 父类 implements 接口{
}
  1. インターフェイスはインターフェイスを継承できます。実装クラスはすべてのメソッドを実装する必要があります
interface A{
	void testA();
}
//接口之间的继承
interface B extends A{
	void testB();
}
class C implements B{
	public void testA() {
	}
	public void testB() {
	}
}

開発におけるインターフェースの重要性

  1. クラスを実現するための一連の仕様を作成する
  2. 個別の設計と実装

デフォルトのキーワード

Java 1.8の新機能である、デフォルトで定義されたメソッドは、デフォルトの実装を持つことができます。

public interface Person {
	//给接口方法默认的实现
	default void eat(){
		System.out.println("在吃饭!!");
	}
	void walk();
}

デフォルトでメソッドを実装するために、実装クラスは必須ではありません。

インターフェイスと抽象クラスの類似点と相違点

インターフェイスと抽象クラスの違いは、一般的な面接の質問です。類似点

  1. 実装されていないメソッドがある可能性があります
  2. インスタンス化できません

差:

  1. 抽象クラスは単一の継承であり、クラスは複数のインターフェイスを実装できます
  2. インターフェイスはコンストラクタを定義できません
  3. インターフェイスのメソッドはパブリックのみにすることができ、抽象クラスはさまざまなアクセスタイプを持つことができます。
  4. インターフェイスで定義できるのは静的定数のみであり、抽象クラスで定義できるのは通常のメンバー変数です。
  5. インターフェイスの抽象メソッドを追加する必要はありません。抽象クラスを追加する必要があります。

インナークラス

内部クラスは、クラスで定義されたクラスです。
Javaの内部クラスは次のとおりです。

  • メンバー内部クラス
  • 静的内部クラス
  • ローカルインナークラス
  • 匿名の内部クラス

メンバー内部クラス

メンバー変数(属性)およびメンバーメソッドと同じレベルが特定のオブジェクトによって所有されます。
文法:

class 外部类{
	class 内部类{
	...
	}
}

特徴:

  • 通常、外部クラスでのみ使用されます
  • 内部クラスとクラスの属性とメソッドは同じレベルです。
  • クラスに属するオブジェクトは、各オブジェクトが作成されるときにメモリにロードされます

静的内部クラス

メンバー内部クラスに静的を追加するのは、静的内部クラスです。
構文:

public class 外部类{
	static class 内部类{
	}
}

メンバー内部クラスとの違い:

  1. メンバー内部クラスはオブジェクトに属し、静的内部クラスは外部クラスに属します
  2. オブジェクトが作成されるたびにメンバー内部クラスがロードされ、静的内部クラスと外部クラスが一緒にロードされます
  3. メンバー内部クラスは外部クラスのすべてのメンバーにアクセスでき、静的内部クラスは外部クラスの静的メンバーにのみアクセスできます

ローカルインナークラス

メソッドで定義されたクラスは現在のメソッドでのみ使用でき、メソッドが呼び出されるとクラスがメモリにロードされます。
文法:

class 外部类{
	public void test(){
		class 内部类{
		
		}
		内部类 对象 = new 内部类();
	}
}

匿名の内部クラス

名前のない内部クラスであるオブジェクトは、クラスの作成時に作成されます。
アプリケーション:インターフェースまたは抽象クラスの実装クラスは1回だけ使用する必要があり、コードは1回だけです。
文法:

new 接口/抽象类()
{
	实现方法
};

USBケースを実装する

//Usb接口
interface Usb{
	void connect(); //连接
	void charge(); //充电
}
//匿名内部类实现接口
Usb usb = new Usb(){
	public void connect(){
		System.out.println("Test2测试连接");
	}
	public void charge(){
		System.out.println("Test2测试充电");
	}
};
usb .connect();
usb .charge();

一般クラスとの違い:

  1. ノーネーム
  2. 1回のみ使用可能
  3. 工法なし
  4. 静的メンバーを定義できません

インタビューの質問:で?コンソールに出力できるもの30、20、10を入力します。

class Outer {
 	public int num = 10;
     class Inner {
         public int num = 20;
         public void show() {
             int num = 30;
             System.out.println(?);   	num
             System.out.println(?);   	this.num
             System.out.println(?); 	Outer.this.num
         }
     }
 }

 class InnerClassTest {
     public static void main(String[] args) {
         Outer.Inner oi = new Outer().new Inner();
         oi.show();
     }    
 }   

終わり

さて、誰もがこの記事をマスターしましたか?ディスカッションのためにメッセージを残すことを歓迎します
.2つの割り当てを残します

  1. プレーヤーインターフェイスの定義、音楽の再生メソッド、ゲームコンソールインターフェイスの定義、ゲームメソッドの再生
    、ブランド属性と価格属性を使用した電話クラスの定義、および呼び出しメソッド
    は、電話を継承してプレーヤーとゲームコンソールのインターフェイスを実装する携帯電話クラスを定義します
  2. 算術インターフェイスを定義し、加算、減算、乗算、除算の4つのメソッドを定義します。各メソッドには2つのdoubleパラメーターがあり、戻り値はdoubleです。
    通常のクラスと匿名の内部クラスを使用して、インターフェースを実装します。

他のJavaの知識を学ぶ必要がある場合は、ここでJavaの概要に関する非常に詳細な知識を調べてください。

おすすめ

転載: blog.csdn.net/u013343114/article/details/112523663