Javaオブジェクト指向学習その3

1. 静的修飾子

static は静的な意味で、基本的な概念は次のとおりです。

静的カテゴリ:

一般に、私たちの分類は静的変更を使用するかどうかに基づいています。静的変数(クラス変数)、インスタンス変数に分かれます。

 

静的変数とインスタンス変数の比較: 

比較する場合は、他のことを覚えていれば理解しやすいでしょう。静的変数はメモリ空間内にコピーを 1 つだけ持ちます。

 

使用するシーン:

 

アプリケーション:

注:静的メソッドは静的インスタンスにのみアクセスできます。インスタンス変数にはアクセスできません。

12. シングルトンモード

 

 お腹を空かせた中国人モデル:

 怠惰なモデル:

 アプリケーションシナリオ:

 

 

 main() メソッドの説明:

 静的を追加した後は、プログラムのエントリ ポイントとみなすことができます。

13. コードブロック

コード ブロックは、クラスやオブジェクトを初期化するために使用される情報です。初期化の内容に応じて、静的コードブロックと非静的コードブロックに分けられます。

基本コンセプト:

 

コードブロックの使用: 

 

14. クラス内の属性割り当ての順序:

(筆記試験はよく出題されます)

 

次に、最後の修飾子:

コンセプト:

Final 修飾子は「最終」を意味し、クラス、メソッド、変数で使用されます。この方法では、代表アドレスを変更することはできない。変数に関しては、変数の内容を変更できないことを意味します。クラス内では継承できません。

そして、以前に学習した静的修飾子は、コード ブロックでより多く使用され、属性に値を割り当てるときにより多く使用されます。

最終的に変更された変数の分類: 

3. 抽象クラスとメソッド

抽象化とは、メソッド シグネチャのみが存在し、メソッド本体が存在しないことを意味します。抽象クラスと抽象メソッドに分かれています。その具体的な実装は、主に抽象メソッドをオーバーライドすることにあります。(抽象クラスの属性を書き換えることは、ovriding ではなく、implement と呼ばれます)

基本コンセプト:

 クラスとメソッドを装飾するためにのみ使用されます。属性の変更には使用できません。

具体的な用途:

 

 アクションの範囲:(頻繁にテストされます)

32. テンプレートメソッドの設計パターン:

(テンプレートメソッド)

このテンプレートのデザイン パターンを見ると、これは実際には抽象クラスの機能であり、抽象メソッドと非抽象メソッドを抽象クラスに記述できることがわかります。継承されたサブクラスでは、抽象メソッドのみを書き換える必要があります。

混乱::

 前述したように、抽象クラスのインスタンス化では、クラスのインスタンス化を実現するために、親クラスのメソッドをサブクラスで完全に書き換える必要があります。したがって、このテンプレート設計パターンは、抽象クラスの非抽象メソッドを書き換えるべきではありません。直接インスタンス化するとエラーが報告されますか?

サブクラスは直接インスタンス化できます。つまり、親クラスのすべてのメソッドが書き換えられるのではなく、親クラスの抽象メソッドのみが書き換えられます。サブクラスは実行可能であり、抽象とみなされません。

33. インターフェース (強調)

インターフェイスは実際には抽象クラスと同じ特性ですが、抽象クラスとは異なり、継承関係ではなく実装関係です。サブクラスと親クラスの関係ではなく、インターフェース(親クラスに相当)と実装クラスの関係です。インターフェースも多態性です。抽象化との違いは、コンストラクターがないことです。スーパーやコレの方法は使えません。

コンセプト:

これは「できる」という意味で、ある機能を実現することに相当します。

 サンプルモデル:

属性を宣言する場合は、static Final を追加することを忘れないでください。メソッドを宣言する場合は、abstract を追加することを忘れないでください。

 

 

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

匿名オブジェクトを追加するには 2 つの方法があります。 

 

インタビューの質問: 抽象クラスとインターフェイスを区別する

 

継承とインターフェースの併用:

3 つ、4 つ、JDK8 および JDK9 インターフェイスの新機能

JDK8 より前では、メソッドの変更を public abstract で追加する必要があります。

JDK8 以降では、デフォルトのメソッドである静的メソッド (static) を呼び出すことができます。

知識ポイント 1: インターフェイスで宣言された静的メソッドは、インターフェイスでのみ呼び出すことができます。実装クラスから呼び出すことはできません。

知識ポイント 2: インターフェイスで宣言されたデフォルトのメソッドは、実装クラスに継承できます。クラスの継承インターフェイスのデフォルト メソッドを実装することと同等です。オーバーライドされた機能があります。

知識ポイント 3: クラスは 2 つのインターフェイスを実装しており、これら 2 つのインターフェイスには同じ名前とパラメーターを持つデフォルト メソッドがあります。実装クラスがこれら 2 つのデフォルト メソッドをオーバーライドしない場合、エラーが報告されます。(インターフェースのデフォルトメソッドが競合します)

 知識ポイント 4: サブクラスは親クラスを継承してインターフェイスを実装します。ただし、親クラスとインターフェイスには、同じ名前とパラメータを持つメソッドがあります。デフォルトでは、親クラスのメソッドが呼び出されます。クラス優先原則。

知識ポイント 5: 実装クラスのインターフェイスでオーバーライドされたメソッドを呼び出します。(interface.super.method())

第四に、内部階級

内部クラスは実際にはクラス内に作成された別のクラスであり、外部クラスとの関係はこの関係であり、継承や実装ではありません。内部クラスの役割は、「高凝集性と低結合性」という開発原則を実現することです。

基本コンセプト:

分類:

マスターする必要があるもの:

内部クラスのインスタンスを作成し、内部クラスで外部クラスの構造体を呼び出します。

メンバーの内部クラスの理解:

 

内部クラスのインスタンスを作成します (例)。 

作成方法は2種類あり、静的内部クラスのインスタンス作成(new class.class)と非静的内部クラスのインスタンス作成(class object.new.class)に分かれます。

インターフェース内部クラスの 3 つの匿名メソッド:

この Comparable は、jdk に付属するクラスです。

 

 

内部クラス合格値(共通テスト)

5、列挙型クラス

列挙型クラスもクラスの一種ですが、クラスによって変更されたクラスとの違いは、列挙型はテスト中にオブジェクトを自由に作成できないことです。列挙は、このクラスでインスタンスを作成することと同じです。

コンセプト:

 

列挙型クラスの実装:

JDK5 より前では、実装はクラスの外にオブジェクトを作成できませんでした (つまり、列挙を実装する方法)。

ステップ 1: 現在のクラスのオブジェクトのインスタンス変数を宣言します (属性を宣言します)。(外からは見えません)

2 番目のステップ: クラスのコンストラクターをプライベート化します。オブジェクトを外部から作成することはできません。

ステップ 3: クラスのインスタンスを作成します。パブリックスタティックファイナル。定数オブジェクトを宣言します。(外から見える)

jdk5 の直後に列挙クラスを使用します。

列挙型クラスの使用方法:

主に通常の例で、列挙型クラスを作成した後にそれを使用する方法について説明します。以下にいくつかの方法を紹介しますが、主に覚えておくべきことは列挙型 [] value() です。そのオブジェクトの配列を返します。 

 テストインスタンス:

enum クラスはインターフェイスを実装します。

実現は継承関係に相当する

列挙型:

パラメータのない列挙型に分割されますが、この場合、コンストラクタは存在せず、tostring メソッドはオーバーライドされません。

この場合、パラメーターを含む列挙にはコンストラクターがあり、必要に応じて tostring メソッドを書き直す必要があります。

 

6. 注釈

 アノテーションは jdk5.0 から始まり、@ アノテーション名として存在します。やることはシンプルです。一部の設定ファイルの代わりに使用できます。使用するクラスのスコープを指定することもできます。

基本コンセプト:

 

 基本的な注釈:

よく使用される注釈は最初の 2 つです。

メタアノテーション:

実際には、既存のアノテーションにアノテーションを付けています。この注釈の範囲と形式を指定するために使用されます。

6.1、単体テスト(重要)

単体テストは本質的にホワイトボックステストです。CRUD を使用する前と同様に、各クラスはテスト クラスを作成する必要があります。これはさらに面倒であり、単体テストを通じてクラスごとにテストを書く必要はありません。テストする必要があるクラスとメソッドをまとめて配置できます。それぞれを個別にテストできます。また、クラス内のさまざまなメソッドを個別にテストすることもできます。 

基本コンセプト:

基本的な手順:

例: @Test

簡素化された操作: 

7. 梱包についての理解

ラッパークラスはswapperです。ラッパー クラスを学習すると、プリミティブ データ型を使用するときに参照データ型に変換できます。一部の基本データ型では、一部のオブジェクト指向メソッドを使用できないためです。とても不便です。たとえば以下のようになります。

存在するために必要なもの:

 

主要な要件:

プリミティブ データとラッパー クラス間の変換。

ケースの操作:

 

 jdk5以降:

jdk5 以降のバージョンでは、自動ボックス化と自動アンボックス化の使用が開始されます。以前に使用した方法よりも高速ですが、本質は基本的な方法を使用することです。 

7.1、文字列データ変換:

基本コンセプト:

 

相互に変換します:

String型の場合、ラッパークラスと基本データ型の変換を次の図に示します。実際、jdk5以降はStringクラスと(Stringクラスとパッケージングクラス)間の変換のみに相当します。

 

オートボクシングに関するメモ:

オートボクシングの方法は、ラッパー クラスとプリミティブ データ型クラスでのみ機能する必要があります。String クラスの場合、その本質は代替ラッパー クラスです。String.valueOf( i ) によって変換されます。また、前に学習した基本的なラッパー クラスも Interger.valueOf( i ) です。

違いは、String が基本クラスに変換されることです。使い方はparseInt( String )です。ラッパー クラスは、 intValue( Integer ) を使用して基本クラスに変換されます。

 

ケースの操作:

以前に配列を使用してデータを保存することを学びましたが、今回はベクトルを使用してデータを保存します。それらの長所と短所:

 手順:

 

オートボクシングとボクシングの使用の違い: 

 v.addElement(Object obj); Object obj = intScore と同等。(オートボックス化)。この方法が最もよく使われます。

ペンでの質問:

 

8. IDEA のショートカット キーとブレークポイント。

 

おすすめ

転載: blog.csdn.net/qq_55928086/article/details/132125657