ブロックデバッグデバッグ
ブロック
ブロック{}は、javaで独自のスコープを持ち、次のように分割できます。
静的コードブロック | 構造コードブロック | 通常のブロック | 同期コードブロック | |
---|---|---|---|---|
場所を宣言する | クラス内、メソッド外 | クラス内、メソッド外 | 方法 | fynchronized(){} |
効果 | クラス全体が特定の初期化操作を実行します(静的プロパティの割り当て...) | 構築コードブロックは、オブジェクトの初期化操作用です(静的または非静的メンバープロパティに値を割り当てます...) | いくつかの一時変数などを宣言します。 | 並行性を制御する |
実行のタイミング | クラスが初めてロードされるとき、クラスは1回だけ実行されます。複数の静的ブロックがある場合、それらは上から下に1回実行されます。 | オブジェクトを作成するときは、コンストラクターコードを実行する前に実行します。複数ある場合は、上から下に実行します。 | メソッドの実行に従う | メソッドの実行に従う |
注意:
-
静的コードブロックは、クラスが初めてロードされるときに実行されます。クラスが複数回ロードされる場合、静的コードブロックは1回だけ実行されます。静的ブロックは、静的変数を初期化するためによく使用されます。
-
オブジェクトの作成時ではなく、クラスの初期化時に実行されます。
-
非静的メンバーは、静的初期化ブロックではアクセスできません。
-
ビルディングブロックは、実行されるコンストラクタコードの前に実行されるようにコンパイルされます
クラスが初めて使用されるときにのみロードされる静的ブロック。
ビルディングブロックはコンストラクターの前に実行され、オブジェクトが作成されるたびに実行されます
デバッグ
学習や開発の過程では、バグに遭遇することは避けられません。迅速にデバッグできるようにするために、デバッグデバッグツールを使用できます。
Javaプログラムのデバッグは非常に簡単で、主にブレークポイントの設定、デバッグの開始、シングルステップ、およびデバッグの終了が含まれます。
デバッグインターフェイスウィンドウ:
1)ブレークポイントを設定する
2)デバッグを開始します
Eclipseには、プログラムのデバッグを開始する方法(Launch)がいくつかあります。つまり、メニュー(Run-> Debug)、アイコン( "green bug")、および右ボタン-> DebugAsを使用します。
プロンプトが表示されたら、[デバッグ]作業領域に切り替えて、[決定を記憶する]にチェックマークを付け、選択内容を記憶します。次回はプロンプトが表示されないので、[はい]をクリックします。
3)シングルステップ
主に上記のいくつかのビューをデバッグに使用し、デバッグビューのいくつかのボタンにはショートカットキーがあります。
ステップReturn(F7):現在のメソッドを終了し、呼び出し元のレイヤーに戻ることを示します。
ステップオーバー(F6):次のコード行を実行することを示します。
ステップイン(F5):現在のメソッドを入力することを示します。
4)デバッグを終了します
Terminateコマンドを使用して、ローカルプログラムのデバッグを終了します。
オブジェクト指向-継承
継承
「木の上の鳥と木の下の2匹のウサギ。何種類の動物、何種類の生き物?」継承の概念があります。
継承:息子は父親の継承を継承します
継承の本質は抽象化にあります。クラスはオブジェクトの抽象化であり、継承は、実世界のより良いモデリングを実現するための、クラスの特定のバッチの抽象化です。
継承の役割:継承を使用すると、コードの再利用性を向上させることができます。
継承の使用方法:
親クラス|スーパークラス|基本クラス:いくつかのサブクラスに従って抽象化し、画像部分を抽出して、親クラスで定義します
サブクラス|派生クラス:サブクラスは親クラスを継承し、親クラスのコンテンツを使用する権利を持ち、サブクラスの新しいコンテンツを定義できるため、サブクラスは親クラスの継続+拡張です。
extendsキーワードは、「拡張」を意味します。子クラスは親クラスの拡張です。
javaでは、<font color = "red"> extends </ font>キーワードを使用して、クラスの継承メカニズムである文法規則を実装します。
<modifier> class <name> [extends <superclass>]{}
//父类
class Person{
public String name;
public int age;
public void sleep(){
System.out.println("休息");
}
}
//子类
//教师类
class Teacher extends Person{
public String subject;
public Teacher() {
}
public void teach(){
System.out.println("传授知识");
}
}
//学生类
class Student extends Person{
public String school;
public Student() {
}
public void study(){
System.out.println("在知识的海洋畅游!");
}
}
注意:
- 子クラスは、親クラスのメンバー変数とメンバーメソッドを継承しますが、親クラスの構築メソッドは継承しません。
- Javaには単一の継承のみがあり、C ++のような複数の継承はありません。複数の継承は混乱を引き起こす可能性があり、継承チェーンが複雑になりすぎて、システムの保守が困難になります。私たちの現実と同じように、複数の親がいる場合、それは混沌とした世界です。複数の継承はコードの再利用性を実現することですが、複雑さをもたらし、システムクラス間の関係を混乱させます。
- javaでの複数の継承は、インターフェイスを介して実現できます
- クラスを定義するときにextendsを呼び出さない場合、その親クラスはjava.lang.Objectです。
継承された特性:
利点:
- 継承により、クラス定義が簡素化され、コードの再利用が実現されます|コードの再利用性が向上します
- より良く拡張することができます
- サブクラスが親クラスを継承すると、親クラスのメンバーを使用する権利を持つか、サブクラスの一意のコンテンツの定義を拡張できます。
- Javaは単一の継承であり、実装が簡単です
短所:
- 子クラスと親クラスは緊密に結合され(高結合)、子クラスは親クラスの実装に依存し、子クラスは独立性に欠けます。
- メンテナンスが簡単ではありません
- サブクラスの単一の継承は、親クラスを1つしか持つことができません。これは、十分な柔軟性がなく、後のメンテナンスに便利ではありません。