ホームページ  >  記事  >  类库下载  >  JAVAで押さえておきたい知識(基礎編)

JAVAで押さえておきたい知識(基礎編)

高洛峰
高洛峰オリジナル
2016-10-10 09:06:061510ブラウズ

JDK と JRE の違い:

JRE は、すべての JAVA プログラムの実行に必要な環境です。現在、JAVA 公式 Web サイトから JAVA をインストールすることを選択すると、JRE がインストールされます。 。

JDK は開発者向けに提供されるツールキットです。通常、JDK 自体に JRE が含まれていますが、通常、JDK は別の JRE セットもインストールします。このセットはパブリック JRE と呼ばれます。図に示すように)、JDK は Oracle の公式 Web サイトからダウンロードする必要があります。

Eclipse などの現在の主流のエディターは、JRE と JDK の場所を見つけます。もちろん、手動で変更することもできます。

JAVA 必須環境変数の説明:

PATH: (必須) Java プログラムをコンパイルして実行するために必要なプログラムへのパスを指定します。通常は jdk インストール ディレクトリにあります (JDK であることに注意してください!!! 異なります) JRE から !現在一般的に使用されている設定方法は、まず JAVA_HOME 変数を定義し、PATH で JAVA_HOME を参照します: %JAVA_HOME%/bin;

CLASSPATH: (以前は必須でしたが、現在は必須ではありません) クラスパスを設定する目的は、Java 実行環境に指示することです。実行する必要のなくなった Java プログラム (.class ファイル) を見つけることができます。

JAVA_HOME: (理論的には必要ありませんが、実際には必要です) 実行するために必要なプログラムのパスを保存する変数を設定します。 Java プログラムは、他の場所で参照するのに便利です (パスの長いリストを入力する必要はなく、JAVA_HOME 変数を直接使用するだけです)。同時に、多くのソフトウェアでも JAVA_HOME 変数を直接呼び出すことが簡単です。設定されていない場合はエラーが発生します。

1.Java の主な構造の説明

Java のすべての .java ファイルはクラスであり、Java プロジェクトは、Java クラスで構成される多数の .java ファイルで構成されます。一般的に、Java クラスの主な構造は次のとおりです。

1. パッケージ宣言: このプロジェクト内での Java クラスが属するパッケージ、つまりプロジェクト内でのその位置。

2. インポートされたパッケージ: 外部ライブラリ。 、ツール;

3. パブリック クラス本体 (またはインターフェイス) 定義: クラス名と Java ファイルの名前は同じである必要があり、クラス内のコンテンツは Java ファイルのメイン コンテンツです

4. : 他のクラスの定義とインターフェイスの定義。

Javaプロジェクトでは、外側から内側に、ソースフォルダー、パッケージ(パッケージ)、クラス(.java、私が長い間取り組んできたもの)です。コンパイル後、コンパイルされたクラス(.java)。 class) は、ソース フォルダーと同じレベルの bin フォルダーに配置されます。異なるソース フロダー内のパッケージは同じ名前を持つことができますが、同じパッケージ内のクラスは同じ名前を持つことができません (2 つの異なるソース フロダー内の同じパッケージ内であっても)

2. 基本データ型

基本データ型 8 : 4 種類の整数、2 種類の浮動小数点、文字、ブール値; short は 2 から始まる 10 桁まで;整数値の範囲に注意し、必ず変換文字を追加してください。長いデータを割り当てる場合、整数の値が int の最大範囲を超える場合は、整数の後に l の説明を追加する必要があります。 float へのポイントの割り当てでは、小数点の後に f の記述を追加する必要があります。

単純な文字変数も同様です (つまり、各要素は文字変数です (PS. 整数の加算は、ASCII コードの加算でもあります))。各文字の ASCII コードを加算することと同等です (文字列の加算演算とは異なります!!! 文字と文​​字列の加算結果は文字列です)

3. よく使用される 7 つの基本的なパッケージ化クラスがあります。パッケージ化されたクラス (大文字と小文字に注意してください!!!): String、Integer、Boolean、Byte、Character、Double、Number

4. 型変換:

char、int、double など. (int) 'a'、(char) 25 などの強制変換で変換できます。 boolean 型の変数は強制変換では取得できません

各変数と各クラス間の変換は、 のメソッドを呼び出すことで実現する必要があります。それぞれのオブジェクト。例: 整数型と文字型を String オブジェクトに変換するには、 String.valueOf(); を使用します。 定数の割り当て:

ローカル定数を初期化するときに、値を割り当てる必要があります。初期化時に値が割り当てられますが、割り当てられるのは 1 回のみです。

6. 変数の有効範囲:

グローバル変数は、クラス名を使用して他のクラスで使用できます。インスタンス変数は、このクラスでのみ使用できます。 。

ローカル変数は、変数が定義されているコード ブロック内、つまり、変数宣言から始まる {{} 2 つの中括弧の間でのみ有効です。

ローカル変数の使用範囲内では、ローカル変数と同名のグローバル変数は無効です。

7. switch と if elseif の違い

どちらも同じ機能を実現できますが、論理的に言えば、if は一致する項目の前にあるすべての項目をチェックする必要があるのに対し、switch は特定の検索方法を使用して一致を見つけます。 。チェックする項目が多い場合は、switch の方が効率的です。switch のもう 1 つの利点はコードが明確であることですが、欠点は複雑な操作を実行するのが難しいことです。

8. foreach ループ メソッドを使用する

foreach ループ メソッドを使用して、配列、オブジェクトなどを素早く走査します。具体的なメソッドは次のとおりです: for (int x: arr) {operation} ですが、foreach の形式に注意してください。データを書き込めません

9. String オブジェクトの一般的なメソッドの記録 (個人的な理解に基づいてよく使用される度合いで分類されており、パラメータや具体的な使用方法については説明しません、以下同様)

length() は長さを取得します文字列

equals() は、文字列の内容が同じかどうかを判断します。等号を使用すると、メモリ内の位置が比較されることに注意してください。 ! ! ! !

replace() 文字列内の部分文字列を置換します。

split() は、指定された記号に従って文字列を分割し、配列に保存します。

toCharArray() は、文字列を文字配列に変換します。 ) 文字列の前後のスペースは削除されますが、対応するコピーが返されることに注意してください。

toLowerCase()、toUpperCase() は文字列の大文字と小文字を区別します。変換;

indexOf()、lastIndexOf() は文字列内の部分文字列の位置を検索します;

charAt() は文字列内の指定された位置の文字を返します。文字列が指定された文字列であるかどうか;

compareTo()、辞書順に文字列を比較します。

Arrays.fill() は配列の初期化と代入に使用できます。

Arrays.copyOf() は配列をコピーします。

11. 静的キーワードの使用に注意してください

詳細な分析については、技術ブログを参照してください: http://www.cnblogs.com/dolphin0520/p/3799052.html

それを使用する場合、必要なメソッドと変数静的リミッターでは、静的リミッターを備えたクラス (メソッド) が他のメソッドまたはグローバル変数を呼び出す必要がある場合、呼び出されたメソッドとグローバル変数も静的に変更する必要があります (これは、静的リミッターではないためです)。静的変数は呼び出されるためにインスタンスを作成する必要があります)。通常、ツールとして使用されるクラスなど、インスタンスの作成を必要としないクラス (メソッド) に使用されます。

静的修飾子とパーミッション修飾子の違いを区別する必要があります。静的の目的はインスタンスを作成せずに静的変数とメソッドを使用することですが、パーミッション修飾子はメソッドと変数の使用範囲を指定します。

12. データを保存するための Java のコレクション クラスの説明

Arraylist、HashMap などのコレクション クラスは Java の機能ですが、基本データではなく参照データのみを保存できます。つまり、Integer は OK ですが、int はダメです。

13. クラスの権限修飾子の説明

最上位クラス (パッケージ内の最初のレベルのクラス) では、 public 修飾子のみが使用可能であり、 public が指定されている場合、クラスがパッケージ間で使用できることを示します。使用しない場合は、デフォルトで「このパッケージで使用可能」になります。.java ファイルにはパブリック クラスが 1 つだけあります。最上位クラスの内部クラスの場合、権限修飾子は private、protected、public、default です。

内部クラスの権限の問題は詳しく調べる必要があります(たとえば、内部クラスにプライベート変数があり、その変数を外部クラス内で使用する必要がある場合など)。ここでは省略します。今。

14. クラスの 2 つのオブジェクトが等しいかどうかを判断する

基本変数を除き、参照変数 (オブジェクト) では、値が等しいかどうか (2 つのオブジェクトが生成されたかどうか) を判断するために 2 つの等号 == を使用することはできません。クラスが等しい場合)、equals メソッドを使用する必要があります。ただし、一般的なユーザー定義クラスのequalsメソッドは、内部判定のために二重等号を使用するため、ユーザーはequalsをオーバーロードする必要があることに注意してください。 (自分で判断するメソッドを書くだけ)

15. 基本変数

Integer

に対応するパッケージングクラスでよく使われるメソッド、2つの値が等しいかどうかを比較整数オブジェクトは

byteValue()、intValue()、shortValue()に等しく、対応する型の値を返します

toString()、IntegerオブジェクトをStringオブジェクトに変換します(同じことがtoBinaryString()、toHexString(にも当てはまります) )、toOctalString())

Integer.valueOf()、String を変換します オブジェクトを Integer オブジェクトに変換します

Integer.parseInt()、String オブジェクトを int 変数に変換します。

Boolean

Byte

Character

Character.inUpperCase()、Character.inLowerCase()、大文字か小文字かを判断します

Character.toUpperCase()、Character.toLowerCase()、大文字または小文字に変換します小文字

toString()、文字を文字列に変換

Double (Float は Doublel を参照でき、メソッドは同じです)

intValue()、整数変数を返します

toString()、文字列を返します

Double .valueOf( )、String オブジェクトを Double オブジェクトに変換します

概要: 基本クラスを変換する必要がある場合、toString() を使用して文字列に変換し、各クラスの valueOf を使用して文字列を変換できます。必要なクラスに。

16. 一般的に使用される数学的計算メソッド

DecimalFormat クラス

さまざまなメソッドは数値をフォーマットし、文字列を取得します。法、二乗、平方根、立方体、立方根法など

四捨五入関数法、四捨五入、四捨五入、四捨五入

最大値最小値絶対値

乱数法(0から1までの任意のdouble値を生成)

ランダムクラス

nextInt()は整数を返し、nextLong()は長整数を返し、nextBoolean()はブール変数を返し、nextFloat()は浮動小数点数を返します

17. メソッドの書き換えについて(オーバーロードとは異なります) !!!)

メソッドをオーバーライドする場合、メソッドの修飾子と戻り値の型を変更できます (パラメーターの型と数値は不変です) ほとんどの場合、親クラスの Final メソッドはオーバーライドできません (プライベートの Final はサブクラスでは表示されません)。書き換えは特殊なケースです)

サブクラス メソッドが親クラス メソッドをオーバーライドする場合、サブクラス メソッドの修飾子は親クラス メソッドの修飾子よりも大きな権限を持つ必要があります

サブクラスは親クラス メソッドよりも優先されます。

18.

のメソッドの書き換えとオーバーロードの違いについて。同じクラスのメソッドをオーバーライドすることはできません。つまり、同じクラス内に同じメソッド名、パラメータの数、パラメータの型を持つ 2 つのメソッドを存在させることはできません。つまり、複数の同一のメソッドをオーバーロードできます。クラス内では、異なるパラメータの型と数のメソッドが存在します。メソッドの書き換えには、親クラスとサブクラスの少なくとも 2 つのクラスが必要です。書き換える場合、メソッドのオーバーロードは 1 つのクラスでのみ行われます。オーバーライドするには、パラメータのタイプと番号を変更する必要があります。親クラスのメソッドはすべて子クラスに継承されるため、親クラスと子クラスに同じメソッド名でパラメータが異なるメソッドが2つある場合は、継承されてからオーバーロードされたものとみなされます。

19. 抽象クラス (抽象キーワード)

抽象クラスは継承のみが可能であり、抽象クラス内の抽象メソッドは継承後に書き換える必要があります。クラスに抽象メソッドが含まれる場合、クラスは抽象クラスである必要があります。

20. インターフェイス

インターフェイスの権限修飾子 (解決予定) インターフェイス内のメソッドはすべてパブリックであり、継承や書き換えが必要なメソッド本体は含まれていません。原則として、インターフェイスはパブリック変更を使用します。パブリックのないインターフェイスは、同じパッケージ内の異なるクラスでのみ使用できます (デフォルトではまだ保護されています)。ただし、パブリックの付いたインターフェイスは、同じ名前のインターフェイスのみ使用できます。 .java では public を使用できます。インターフェイス内では、静的メソッドとデフォルト メソッドを除き、他のメソッドはメソッド本体を持つことができません。

21. オブジェクトの変換

オブジェクトの変換は、上向きの変換と下向きの変換に分けられます。変換することができます (強制変換が必要です)。例: A a = new B();, B は A のサブクラスであり、その場合、a は最終的に型 A のオブジェクトとして扱われますが、それでも本質的にはクラス B です。親クラス型の参照はすべてのプロパティを呼び出すことができます。親クラスで定義されたメソッドとメソッドは、サブクラス内にのみ存在するメソッドと属性の範囲を超えています。つまり、 a は、型 B のクラス A から継承されたメソッドと属性を呼び出すことができますが、そのクラスに固有のメソッドと属性を呼び出すことはできません。クラスB。メソッドを呼び出すときも同様です。C が B から継承し、A から継承すると仮定すると、C 型オブジェクト c がクラス内のメソッドを呼び出すと、まず利用可能な範囲内のパラメータとして C 型を検索します (参照)。メソッド オーバーロード バージョンが存在しない場合は、B にアップキャストされ、実行可能なメソッド オーバーロード バージョンが見つかるまで、タイプ B がパラメータであるメソッド オーバーロード バージョンが検索されます。存在しない場合は呼び出すことができず、エラーが報告されます。

22. クラスパッケージについて

実際の開発では、クラスパッケージはファイル内のコメントなしのコードの最初の行で指定する必要があります。パッケージをインポートするときに * を使用してパッケージ内のすべてのクラスをインポートすると、サブクラスはインポートされません。サブクラスをインポートする必要がある場合は、再インポートする必要があります。 import static を使用して、クラス内の静的メンバーをインポートします。

23. 定数について

finalで定義される定数はローカル定数とグローバル定数に分類されます。ローカル定数はライフサイクル中に再定義することはできませんが、必要に応じてその都度新しい値を割り当てることができます。グローバル定数 通常は public static Final を使用し、プログラムの実行中にグローバル定数の値は変更されません。

追記:

ポリモーフィズムは完全には理解されていないため、さらに詳しく理解する必要があります

インターフェースの権限修飾子は完全には理解されていないため、さらに詳しく理解する必要があります

JDK と JRE の違い:

JRE は、現在、JAVA 公式 Web サイトから JAVA をインストールすることを選択すると、JRE がインストールされます。

JDK は開発者向けに提供されるツールキットです。通常、JDK 自体に JRE が含まれていますが、通常、JDK は別の JRE セットもインストールします。このセットはパブリック JRE と呼ばれます。図に示すように)、JDK は Oracle の公式 Web サイトからダウンロードする必要があります。

Eclipse などの現在の主流のエディターは、JRE と JDK の場所を見つけます。もちろん、手動で変更することもできます。

JAVA 必須環境変数の説明:

PATH: (必須) Java プログラムをコンパイルして実行するために必要なプログラムへのパスを指定します。通常は jdk インストール ディレクトリにあります (JDK であることに注意してください!!! 異なります) JRE から !現在一般的に使用されている設定方法は、まず JAVA_HOME 変数を定義し、PATH で JAVA_HOME を参照します: %JAVA_HOME%/bin;

CLASSPATH: (以前は必須でしたが、現在は必須ではありません) クラスパスを設定する目的は、Java 実行環境に指示することです。どのディレクトリに実行する Java プログラム (.class ファイル) がありますか? 現在は必要ありません。

JAVA_HOME: (理論的には必要ありませんが、実際には必要です) Java プログラムの実行に必要なプログラムのパスを保存する変数を設定し、他の場所で参照できるようにします (パスの長いリストを入力する必要はありません。 JAVA_HOME 変数を直接呼び出す)、同時に、多くのソフトウェアは JAVA_HOME 変数を直接呼び出すようになりましたが、この変数が設定されていないとエラーが発生する可能性があります。

1.Java の主な構造の説明

Java のすべての .java ファイルはクラスであり、Java プロジェクトは、Java クラスで構成される多数の .java ファイルで構成されます。一般的に、Java クラスの主な構造は次のとおりです。

1. パッケージ宣言: このプロジェクト内での Java クラスが属するパッケージ、つまりプロジェクト内でのその位置。

2. インポートされたパッケージ: 外部ライブラリ。 、ツール;

3. パブリック クラス本体 (またはインターフェイス) 定義: クラス名と Java ファイルの名前は同じである必要があり、クラス内のコンテンツは Java ファイルのメイン コンテンツです

4. : 他のクラスの定義とインターフェイスの定義。

Javaプロジェクトでは、外側から内側に、ソースフォルダー、パッケージ(パッケージ)、クラス(.java、私が長い間取り組んできたもの)です。コンパイル後、コンパイルされたクラス(.java)。 class) は、ソース フォルダーと同じレベルの bin フォルダーに配置されます。異なるソース フロダー内のパッケージは同じ名前を持つことができますが、同じパッケージ内のクラスは同じ名前を持つことができません (2 つの異なるソース フロダー内の同じパッケージ内であっても)

2. 基本データ型

基本データ型 8 : 4 種類の整数、2 種類の浮動小数点、文字、ブール値; short は 2 から始まる 10 桁まで;整数値の範囲に注意し、必ず変換文字を追加してください。長いデータを割り当てる場合、整数の値が int の最大範囲を超える場合は、整数の後に l の説明を追加する必要があります。 float へのポイントの割り当てでは、小数点の後に f の記述を追加する必要があります。

単純な文字変数も同様です (つまり、各要素は文字変数です (PS. 整数の加算は、ASCII コードの加算でもあります))。各文字の ASCII コードを加算することと同等です (文字列の加算演算とは異なります!!! 文字と文​​字列の加算結果は文字列です)

3. よく使用される 7 つの基本的なパッケージ化クラスがあります。パッケージ化されたクラス (大文字と小文字に注意してください!!!): String、Integer、Boolean、Byte、Character、Double、Number

4. 型変換:

char、int、double など. (int) 'a'、(char) 25 などの強制変換で変換できます。 boolean 型の変数は強制変換では取得できません

各変数と各クラス間の変換は、 のメソッドを呼び出すことで実現する必要があります。それぞれのオブジェクト。例: 整数型と文字型を String オブジェクトに変換するには、 String.valueOf(); を使用します。 定数の割り当て:

ローカル定数を初期化するときに、値を割り当てる必要があります。初期化時に値が割り当てられますが、割り当てられるのは 1 回のみです。

6. 変数の有効範囲:

グローバル変数は、クラス名を使用して他のクラスで使用できます。インスタンス変数は、このクラスでのみ使用できます。 。

ローカル変数は、変数が定義されているコード ブロック内、つまり、変数宣言から始まる {{} 2 つの中括弧の間でのみ有効です。

ローカル変数の使用範囲内では、ローカル変数と同名のグローバル変数は無効です。

7. switch と if elseif の違い

どちらも同じ機能を実現できますが、論理的に言えば、if は一致する項目の前にあるすべての項目をチェックする必要があるのに対し、switch は特定の検索方法を使用して一致を見つけます。 。チェックする項目が多い場合は、switch の方が効率的です。switch のもう 1 つの利点はコードが明確であることですが、欠点は複雑な操作を実行するのが難しいことです。

8. foreach ループ メソッドを使用する

foreach ループ メソッドを使用して、配列、オブジェクトなどを素早く走査します。具体的なメソッドは次のとおりです: for (int x: arr) {operation} ですが、foreach の形式に注意してください。データを書き込めません

9. String オブジェクトの一般的なメソッドの記録 (個人的な理解に基づいて一般的な使用度に応じて分類されており、パラメータや具体的な使用方法は説明しません)

length() は文字列の長さを取得します。

equals() は、文字列の内容が同じかどうかを判断します。比較に等号を直接使用することはできないことに注意してください。等号を使用すると、メモリ内の位置が比較されます。 ! ! ! !

replace() 文字列内の部分文字列を置換します。

split() は、指定された記号に従って文字列を分割し、配列に保存します。

toCharArray() は、文字列を文字配列に変換します。 ) 文字列の前後のスペースは削除されますが、対応するコピーが返されることに注意してください。

toLowerCase()、toUpperCase() は文字列の大文字と小文字を区別します。変換;

indexOf()、lastIndexOf() は文字列内の部分文字列の位置を検索します;

charAt() は文字列内の指定された位置の文字を返します。文字列が指定された文字列であるかどうか;

compareTo()、辞書順に文字列を比較します。

Arrays.fill() は配列の初期化と代入に使用できます。

Arrays.copyOf() は配列をコピーします。

11. 静的キーワードの使用に注意してください

詳細な分析については、技術ブログを参照してください: http://www.cnblogs.com/dolphin0520/p/3799052.html

ご使用の際は、必要に応じてクラス外のメソッドを呼び出すには、静的修飾子を使用して変数を追加する必要があります。また、静的修飾子を使用したクラス (メソッド) が他のメソッドまたはグローバル変数を呼び出す必要がある場合は、呼び出されるメソッドとグローバル変数も静的に変更する必要があります (これはインスタンスを作成するには、非静的変数を呼び出す必要があるためです)。通常、ツールとして使用されるクラスなど、インスタンスの作成を必要としないクラス (メソッド) に使用されます。

静的修飾子とパーミッション修飾子の違いを区別する必要があります。静的の目的はインスタンスを作成せずに静的変数とメソッドを使用することですが、パーミッション修飾子はメソッドと変数の使用範囲を指定します。

12. データを保存するための Java のコレクション クラスの説明

Arraylist、HashMap などのコレクション クラスは Java の機能ですが、基本データではなく参照データのみを保存できます。つまり、Integer は OK ですが、int はダメです。

13. クラスの権限修飾子の説明

最上位クラス (パッケージ内の最初のレベルのクラス) では、 public 修飾子のみが使用可能であり、 public が指定されている場合、クラスがパッケージ間で使用できることを示します。使用しない場合は、デフォルトで「このパッケージで使用可能」になります。.java ファイルにはパブリック クラスが 1 つだけあります。最上位クラスの内部クラスの場合、権限修飾子は private、protected、public、default です。

内部クラスの権限の問題は詳しく調べる必要があります(たとえば、内部クラスにプライベート変数があり、その変数を外部クラス内で使用する必要がある場合など)。ここでは省略します。今。

14. クラスの 2 つのオブジェクトが等しいかどうかを判断する

基本的な変数を除き、参照変数 (オブジェクト) では、値が等しいかどうか (オブジェクトによって生成された 2 つのオブジェクトが等しいかどうか) を判断するために 2 つの等号を使用することはできません。クラスが等しい) の場合は、equals メソッドを使用する必要があります。ただし、一般的なユーザー定義クラスのequalsメソッドは、内部判定のために二重等号を使用するため、ユーザーはequalsをオーバーロードする必要があることに注意してください。 (自分で判断するメソッドを書くだけ)

15. 基本変数

Integer

に対応するパッケージングクラスでよく使われるメソッド、2つの値が等しいかどうかを比較整数オブジェクトは

byteValue()、intValue()、shortValue()に等しく、対応する型の値を返します

toString()、IntegerオブジェクトをStringオブジェクトに変換します(同じことがtoBinaryString()、toHexString(にも当てはまります) ), toOctalString())

Integer.valueOf()、String を変換します オブジェクトを Integer オブジェクトに変換します

Integer.parseInt()、String オブジェクトを int 変数に変換します。

Boolean

Byte

Character

Character.inUpperCase()、Character.inLowerCase()、大文字か小文字かを判断します

Character.toUpperCase()、Character.toLowerCase()、大文字または小文字に変換します小文字

toString()、文字を文字列に変換

Double (Float は Doublel を参照でき、メソッドは同じです)

intValue()、整数変数を返します

toString()、文字列を返します

Double .valueOf( )、String オブジェクトを Double オブジェクトに変換します

概要: 基本クラスを変換する必要がある場合、toString() を使用して文字列に変換し、各クラスの valueOf を使用して文字列を必要なクラスに変換します。

16. 一般的に使用される数学的計算メソッド

DecimalFormat クラス

各メソッドは数値をフォーマットし、文字列を取得します。関数法、二乗、平方根、立方体、立方根法など

四捨五入関数法、四捨五入、四捨五入、四捨五入

最大値最小値絶対値

乱数法(0から1までの任意のdouble値を生成) )

Random class

nextInt()は整数を返し、nextLong()はlong整数を返し、nextBoolean()はブール変数を返し、nextFloat()は浮動小数点数を返します

17.メソッドの書き換えについて(とは異なります)オーバーロード!!!)

メソッドを書き換えるとき、メソッドの修飾子と戻り値の型を変更できます (パラメーターの型と数値は不変です)。ほとんどの場合、親クラスの最後のメソッドはオーバーライドできません (プライベートの最終メソッドはサブクラスでは表示されず、書き換えることができます。これは特殊な状況です)

サブクラス メソッドが親クラス メソッドをオーバーライドする場合、サブクラス メソッドの修飾子権限は親クラス メソッドの修飾子権限より大きくなければなりません

。サブクラスが親クラスのメソッドをオーバーライドする場合、サブクラスのメソッドの戻り値の型を変更する場合、その型は親クラスの同じメソッドの戻り値のサブクラスである必要があります。メソッドの書き換えとオーバーロード

同じクラス内でメソッドをオーバーライドすることはできません。つまり、同じクラス内に同じメソッド名、パラメーターの数、パラメーターの型を持つ 2 つのメソッドを存在させることはできません。つまり、メソッドをオーバーロードできます。クラス内には、同じメソッド名、異なるパラメータの型、およびパラメータの数を持つ複数のメソッドが存在できます。メソッドの書き換えには、親クラスとサブクラスの少なくとも 2 つのクラスが必要です。書き換える場合、メソッドのオーバーロードは 1 つのクラスでのみ行われます。オーバーライドするには、パラメータのタイプと番号を変更する必要があります。親クラスのメソッドはすべて子クラスに継承されるため、親クラスと子クラスに同じメソッド名でパラメータが異なるメソッドが2つある場合は、継承されてからオーバーロードされたものとみなされます。

19. 抽象クラス (抽象キーワード)

抽象クラスは継承のみが可能であり、抽象クラス内の抽象メソッドは継承後に書き換える必要があります。クラスに抽象メソッドが含まれる場合、クラスは抽象クラスである必要があります。

20. インターフェイス

インターフェイスの権限修飾子 (解決予定) インターフェイス内のメソッドはすべてパブリックであり、継承や書き換えが必要なメソッド本体は含まれていません。原則として、インターフェイスはパブリック変更を使用します。パブリックのないインターフェイスは、同じパッケージ内の異なるクラスでのみ使用できます (デフォルトではまだ保護されています)。ただし、パブリックの付いたインターフェイスは、同じ名前のインターフェイスのみ使用できます。 .java では public を使用できます。インターフェイス内では、静的メソッドとデフォルト メソッドを除き、他のメソッドはメソッド本体を持つことができません。

21. オブジェクトの変換

オブジェクトの変換は、上向き変換と下向き変換に分けられます。 親クラス オブジェクトの変換では、それらがサブクラス オブジェクトに属するかどうかを考慮する必要があります。 (強制変形が必要です)。例: A a = new B();, B は A のサブクラスであり、その場合、a は最終的に型 A のオブジェクトとして扱われますが、それでも本質的にはクラス B です。親クラス型の参照はすべてのプロパティを呼び出すことができます。親クラスで定義されたメソッドとメソッドは、サブクラス内にのみ存在するメソッドと属性の範囲を超えています。つまり、 a は、型 B のクラス A から継承されたメソッドと属性を呼び出すことができますが、そのクラスに固有のメソッドと属性を呼び出すことはできません。クラスB。メソッドを呼び出すときにも同じことが当てはまります。C が B から継承し、A から継承するとします。クラス内のメソッドを呼び出すとき、C 型オブジェクト c は、最初に利用可能な範囲内のパラメーターとして C 型を検索します (前項を参照)。メソッド オーバーロード バージョンが存在しない場合は、B にアップキャストされ、実行可能なメソッド オーバーロード バージョンが見つかるまで、タイプ B をパラメータとしてメソッド オーバーロード バージョンが検索されます。呼び出すことができず、エラーが報告されます。

22. クラスパッケージについて

実際の開発では、クラスパッケージはファイル内のコメントなしのコードの最初の行で指定する必要があります。パッケージをインポートするときに * を使用してパッケージ内のすべてのクラスをインポートすると、サブクラスはインポートされません。サブクラスをインポートする必要がある場合は、再インポートする必要があります。 import static を使用して、クラス内の静的メンバーをインポートします。

23. 定数について

finalで定義される定数はローカル定数とグローバル定数に分類されます。ローカル定数はライフサイクル中に再定義することはできませんが、必要に応じてその都度新しい値を割り当てることができます。グローバル定数 通常は public static Final を使用し、プログラムの実行中にグローバル定数の値は変更されません。

追記:

ポリモーフィズムは完全には理解されていないため、さらに詳しく理解する必要があります

インターフェースの権限修飾子は完全には理解されていないため、さらに詳しく理解する必要があります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。