Javaの基本(2)オブジェクト指向

ここに写真の説明を挿入
p1、p2がヒープ内で生成され、スペースが開かれることを理解してください。
P3は実際には変数を確認し
ここに写真の説明を挿入
、ローカル変数とp1の変数の違いを示し
ここに写真の説明を挿入
ています。属性はデフォルトです。
ローカル変数は初期化
されません。属性はヒープにロードされます(非静的)。
ローカル変数:ヒープスペースにロードされます。

jvmの簡単な理解

ソースプログラムがコンパイルされた後、1つ以上のバイトコードファイル
生成されます。jvmのクラスローダーとインタープリターを使用してバイトコードファイルを解釈および実行します。バイトコードファイルの対応するクラスがメモリにロードされることを覚えておく必要があります。メモリ分析。
ここに写真の説明を挿入
jvmでは、ローカル変数(クラス内のメソッドの属性)をスタック構造に格納します。
ヒープ:新しいオブジェクト(配列、オブジェクト)をスペースにロードし、オブジェクトの(非静的)属性をロードします。
メソッド領域:クラス読み込み情報、定数プール、静的ドメイン
参照タイプ(クラス、インターフェイス、配列)変数、
ここに写真の説明を挿入
ここに写真の説明を挿入
新しいオブジェクトの後にのみ格納可能(nullおよびアドレス値)、メモリは次のように
なっているため、出力student []はアドレスを表示します。 stus.stateは値を表示し、値のない属性でnullポインターエラーを報告します。
データタイプを参照してください。値が変更された後、値を指すデータタイプを変更する必要があります。

変形可能なパラメータ表現

ここに写真の説明を挿入

可変数のパラメーターのメソッドは、このクラスのメソッド名と同じであり、異なるパラメーターを持つメソッド間で可変数のパラメーターをオーバーロードする方法は、このクラスのメソッド名と同じであり、同じパラメータータイプの配列メソッドの1つです。過負荷を構成せず、共存することはできません。
また
ここに写真の説明を挿入
、その本質または配列トラバースするには、最後に宣言する必要があります

権限

ここに写真の説明を挿入

このキーワード


手段:現在のオブジェクトのクラスメソッド/コンストラクターでは、this。属性またはthis。メソッドを使用できます。通常は省略します。this。変数は
、正式なパラメーターと属性の名前同じである場合のみ明示的に使用する必要があります正式なパラメータではなくプロパティの
ここに写真の説明を挿入
ようです。1。これをコンストラクタで使用して、this(age)を使用して他のコンストラクタのコンテンツを呼び出すことができるため、this.age=age;この文は省略されています。
2.これは、コンストラクターでそれ自体を呼び出すことはできず、ループを形成することもできません。
N個のコンストラクター、これはn-1個のみ。
3.これは最初の行にある必要があり、1つだけ

MVC

ここに写真の説明を挿入

継承

extendsサブクラスは、親クラスのすべてのメソッド属性を継承し、privateも継承できますが、直接呼び出すことはできません。サブクラスは拡張できます
。Javaは単一の継承のみを許可し、そのサブクラスは複数の親クラスを持つことができ、すべてが継承します。
すべてのクラスはオブジェクトクラスから継承します

メソッドの書き換え

親メソッドの変換
ここに写真の説明を挿入

スーパーキーワード

親を指します
ここに写真の説明を挿入

最初のものは子クラスに戻り、2番目のものは親クラスです
ここに写真の説明を挿入
ここに写真の説明を挿入

サブクラスオブジェクトのインスタンス化

  • 結果:子クラスは親クラスを継承した後、親クラスによって宣言されたメソッドと属性を取得します。サブクラスのオブジェクトを作成し、親オブジェクトによって宣言されたすべてのプロパティをヒープスペースにロードします
  • プロセスの観点から:サブクラスコンストラクターを介してサブクラスオブジェクトを作成する場合、直接または間接的に親クラスコンストラクターを呼び出してから、親クラスの親クラスコンストラクターを呼び出す必要があります。オブジェクトのnullパラメータコンストラクタを知っていると、すべての親クラスがロードされているため、親クラスの構造をメモリに格納でき、サブクラスオブジェクトを呼び出すことを検討できます
    ここに写真の説明を挿入
    。メモリには非常に多くのコンストラクタがありますが、作成されたオブジェクトは1つだけです。

多形性

複数のフォーム
ここに写真の説明を挿入

親クラスの参照は子クラスのオブジェクトを指します。
ここに写真の説明を挿入
これはコンパイル時に親クラスを呼び出すメソッドですが、サブクラスの書き換えの実行中に実行されるメソッドは、eatメソッドがpersonクラスを指すというものですが、manによって書き換えられたメソッドを実行します。左を見てコンパイルし、
多形の前提の右の実装を見てください

  1. クラスの継承
  2. メソッドの書き換え
  3. 属性適用できない多型

仮想メソッド:多態性を使用する場合の親メソッド

多態性は実行時の動作です。コンパイルフェーズは、動的バインディングとも呼ばれます。

オーバーロードと書き換えの違い

1.定義の違い:

1.オーバーロードとは、異なる関数が同じ関数名を使用するが、関数のパラメーターの数またはタイプが異なることを意味します。さまざまな関数は、呼び出すときの関数パラメーターに従って区別されます。

コンパイルはバインドされます。これは、早期バインディングおよび静的バインディングとも呼ばれます。
2.上書き(書き換えとも呼ばれます)とは、派生クラスの基本クラスで仮想関数(仮想関数に注意)を再実装することです。つまり、関数名とパラメーターは同じですが、関数の実装本体が異なります。
特定のメソッドは、呼び出されたときにのみ認識され、レイトバインディングおよびダイナミックバインディングとも呼ばれます。
次に、ルールが異なります。

1.ルールのオーバーロード:

①異なるパラメータリストが必要です。

②アクセス修飾子は異なる場合があります。

③さまざまな例外がスローされる可能性があります。

2.メソッドの書き換えのルール:

①パラメータリストは、書き換えるメソッドと完全に同じである必要があります。そうでない場合、書き換えとは言えず、オーバーロードします。

②返される型は、書き換えられたメソッドの戻り型と常に同じである必要があります。そうでない場合、上書きとは言えず、オーバーロードと呼ばれます。

③アクセス修飾子の制限は、オーバーライドされたメソッドのアクセス修飾子よりも大きくする必要があります。

④オーバーライドされたメソッドは、新しいチェックされた例外をスローしたり、オーバーライドされたメソッド宣言よりも広い例外をチェックしたりしてはなりません。

3つ目は、クラス間の関係の違いです。

オーバーライドは、サブクラスと親クラスの間の関係であり、垂直関係です。オーバーロードは、同じクラス内のメソッド間の関係であり、水平関係です。

instanceofキーワード

x
がBのオブジェクトであるかどうかと戻り値をチェックするとき、Bのxインスタンスはブール値です。
ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入

オブジェクト

ここに写真の説明を挿入

==演算子:

  • 基本的なデータタイプの値を比較するために使用されます(ブール値を除いて、タイプは異なる場合があります)
  • データタイプを参照し、アドレスを比較するために使用されます

equalsメソッド:
データタイプの参照にのみ使用できます

  • オブジェクトクラスのequalsは==と同等です
  • String、data、File、およびwrapperクラスがequalsメソッドを書き直したため、コンテンツが比較されます
  • ここに写真の説明を挿入

ここに写真の説明を挿入

toString
ここに写真の説明を挿入
のtoStringオブジェクトでは、アドレスを返します

  • 文字列、データ、ファイル、ラッパークラスはすべてtoStringメソッドを書き換えます

パッケージング

ここに写真の説明を挿入
ここに写真の説明を挿入

ここに写真の説明を挿入
ここに写真の説明を挿入
未定義のブール基本データタイプはfalseを返し、クラスはnullを返します。
ここに写真の説明を挿入

自動ボクシングとボックス解除により
ここに写真の説明を挿入
ここに写真の説明を挿入
、基本的なデータタイプがクラスに直接割り当てられ
、クラスがデータタイプと等しくなります。

Stringから基本データタイプ/パッケージングクラスへのparse *メソッド。
ここに写真の説明を挿入
基本タイプからStringへの直接接続、またはインタビューの
ここに写真の説明を挿入
質問の
ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入
ソースコードでは、integercacheはintegercache内で定義され、integer []配列はintegercacheで定義され、-127-128を節約します。スペースの数で自動ボクシング(2番目のもの)を使用する場合は、範囲内で直接配列要素を使用でき、新しいものにする必要はありません。
3つ目は、newが別のアドレスを指しているため、falseです。

静的キーワード

1.static
ここに写真の説明を挿入
static:静的変数、クラスの複数のオブジェクトの作成では、複数のオブジェクトが同じ静的変数を共有します。静的変数が特定のオブジェクトを介して変更されると、他のオブジェクトでも同じプロパティが変更されます。

  • staticは、クラスのロードとともにロードされます
  • オブジェクトの作成に先立つ静的変数のロード
  • クラスは1回だけロードされるため、静的変数のコピーが1つだけ保存され、メソッド領域に静的フィールドがあります。
  • たとえば、system.out、math、piなどです。

ここに写真の説明を挿入
静的メソッドは静的メソッドとプロパティのみを呼び出す
ことができます非静的メソッドは非静的および静的メソッドとプロパティを呼び出すことができます

スタティックは、クラスの読み込み期間にあるため、これとスーパーを使用できません

使用法:属性は複数のオブジェクトで共有でき、オブジェクトごとに異なることはありません
。静的属性を操作
するメソッドは通常、静的ツールクラスのメソッドとして宣言され通常は静的として宣言されます。

シングルトンデザインパターン

ここに写真の説明を挿入
ここに写真の説明を挿入
クラスにはオブジェクトが1つだけあり、オブジェクトはクラスに作成されます。上記は空腹の男のスタイルです、
それが現れる
ここに写真の説明を挿入
すぐに、オブジェクトは新しいです。

違い:
ハングリースタイルのオブジェクトは読み込みに時間がかかり、スレッドセーフです。
レイジースタイル:オブジェクトと安全でないスレッドの作成を遅らせます。
アプリケーション:
ネットワークカウンター、ログアプリケーション、データベース接続プール、アプリケーション

属性の割り当て順序

  1. デフォルトの初期化
  2. 明示的な初期化
  3. イニシャライザー
  4. オブジェクト。プロパティ/メソッド

最終キーワード

最終:
クラス:継承できません例:文字列、システムクラス
メソッド:オーバーライドできません
変数属性:定数
静的最終変更属性:グローバル定数

抽象クラス

abstract:
クラスをインスタンス化することはできませんが、サブクラスのインスタンス化を容易にするためにコンストラクターが提供されます。開発では、サブクラスをインスタンス化できるように抽象クラスサブクラスが提供されます。
メソッド:メソッド宣言のみで、メソッド本体はありません
。抽象メソッドを含むクラスは、抽象クラス
サブクラス親クラスのすべての抽象メソッドを書き換え、サブクラスをインスタンス化できます。メソッドが1つ少ない場合でも、サブクラスは抽象クラスであるため、abstractキーワードを使用する必要があります。

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

ここに写真の説明を挿入
ここに写真の説明を挿入
抽象クラスには抽象メソッドがあり、サブクラスは抽象親クラスを継承します。
親クラスの抽象メソッドをオーバーライドする必要があります。
メインメソッドは、サブクラスを確立することでもあります。

インターフェース

Javaは複数の継承をサポートしていません。インターフェイスを使用すると、複数の継承が可能です。
インターフェイスとクラスは2つの並列構造です
。JDK7より前は、グローバル変数public static finalメソッドとabstractメソッド:publicabstractのみを定義できました。
jdk8は、グローバル定数と抽象メソッドの定義に加えて、静的メソッドとデフォルトメソッドも定義できます。

インターフェイスにコンストラクターを含めることはできず、インターフェイスをインスタンス化することもできません。
ここに写真の説明を挿入
クラスはインターフェイスを使用してインターフェイスを実装できます。実装クラスがインターフェイス内のすべての抽象メソッドを実装している場合は、強化できます。実装クラスがすべてをカバーしていない場合でも、1つです。抽象クラス

Javaクラスは複数のインターフェースを実装できます-> javaの単一継承
インターフェースの制限を補うのは実際には仕様です
ここに写真の説明を挿入

プロキシモード(プロキシ)

ここに写真の説明を挿入

ファクトリーモード()

後ろを見て


ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入
インタビュー質問インターフェースのボールは変更できません。
ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/qq_43430273/article/details/112729945