オブジェクト指向6日目:
潜水艦ゲーム1日目:
- 6つのクラスを設計し、ワールドクラスを設計し、テストします
潜水艦ゲーム2日目:
- 6つのクラスにコンストラクターを追加してテストします
潜水艦ゲームの3日目:
- 偵察潜水艦アレイ、魚雷潜水艦アレイ、地雷潜水艦アレイ、地雷アレイ、爆雷アレイの設計とテスト
- SeaObjectスーパークラスを設計し、スーパークラスを継承するように6つのクラスを設計します
- SeaObject用に2つの構築メソッドが設計されており、それぞれ6つのクラスによって呼び出されます。
潜水艦ゲームの4日目:
- 偵察潜水艦アレイ、魚雷潜水艦アレイ、および地雷潜水艦アレイをSeaObjectアレイに結合し、テストします
- 6つのクラスでmove()moveをオーバーライドしてテストします
- ドローウィンドウ
潜水艦ゲームの5日目:
- クラスのメンバーにアクセス制御修飾子を追加する
- Images画像クラスを作成する
潜水艦ゲーム6日目:
- デザインウィンドウの幅と高さは定数です。必要に応じて変更してください
- 海の地図とオブジェクトを描画します。
- オブジェクトを描画する場合は、オブジェクトの画像を取得する必要があります。各オブジェクトは画像を取得できます。
つまり、画像を取得する動作は一般的な動作です。したがって、SeaObjectクラスで
は、それぞれの動作は画像を取得するオブジェクトが異なるため、デザインは抽象メソッド
----画像を取得するSeaObjectの抽象メソッドgetImage()を設計します - 6つの派生クラスでgetImage()を書き換えて、オブジェクトの画像を取得します
---- getImage()を書き換えて画像を取得します - ウィンドウに描画する必要があるのは生きているオブジェクトだけなので、オブジェクトの状態を設計する必要があります。
各オブジェクトには状態があります。つまり、状態は共通のプロパティです。したがって、SeaObjectの設計では、
状態は次のようになります。通常は定数として設計され、状態変数は同時に設計されます
。現在の状態を表します----状態定数LIVEおよびDEADはSeaObjectで設計され、状態変数は現在の状態を表します。
後のビジネスでは、オブジェクトの状態を判断する必要があります。各オブジェクトは状態を判断できます。
つまり、状態を判断する動作は一般的な動作です。したがって、SeaObjectで設計されているため
、状態を判断する各オブジェクトの動作は同じです。したがって、これは一般的なメソッドとして設計されています
----オブジェクトの状態を判断するためにSeaObjectのisLive()、isDead()を設計します - データを取得したら、描画を開始できます。すべてのオブジェクトを描画できます。
つまり、オブジェクトの描画の動作は一般的な動作です。したがって、SeaObjectでは
、各オブジェクトのオブジェクトの描画の動作は同じであるため、一般的な動作として設計されています。メソッド
----絵を描くためにSeaObjectでpaintImage()を設計する----------描画方法、習熟は必要ありません - オブジェクトを描画する動作が完了しました。ウィンドウWorldでそれを呼び出すだけです。
- オブジェクトを準備します
- paint()メソッドをオーバーライドします------ paintImage()メソッドを呼び出します
- オブジェクトを描画する場合は、オブジェクトの画像を取得する必要があります。各オブジェクトは画像を取得できます。
レビュー:
- パッケージ化とインポート:
- アクセス制御修飾子:------データを安全に保つ
- パブリック:パブリック、任意のクラス
- プライベート:プライベート、このクラス
- 保護:保護、このクラス、派生クラス、および同じパッケージクラス
- デフォルト:何も書き込まない、このクラス、同じパッケージクラス
- final:final、変更不可能
な変数は変更できず、メソッドはオーバーライドできず、クラスは継承できません - 静的:静的
- 静的変数:静的、クラス、メソッド領域、1つのコピー、すべてのオブジェクト(画像、音声、ビデオ)で共有されるデータ
- 静的メソッド:静的、クラス、メソッド領域、1つのコピー、暗黙的なこの転送なし、インスタンスメンバーに直接アクセスできない
メソッドの操作はオブジェクトとは何の関係もありません - 静的ブロック:静的、クラス、クラスがロードされると自動的に実行され、一度、
静的リソース(画像、オーディオ、ビデオ)をロード/初期化します
ノート:
-
静的最終定数:
- 初期化中に宣言する必要があります
- アクセスするクラス名ポイント、変更できません
- 提案:定数名のすべての文字は大文字で、複数の単語は_で区切られます
- コンパイラは、コンパイル時に定数を特定の数値に直接置き換えます。これは効率的です。
- いつ使用するか:データは変更されず、頻繁に使用されます
public class StaticFinalDemo { public static void main(String[] args) { System.out.println(Aoo.PI); //常常通过类名点来访问 //Aoo.PI = 3.1415926; //编译错误,常量不能被改变 //1)加载Boo.class到方法区中 //2)静态变量num一并存储到方法区中 //3)到方法区中获取num的值并输出 System.out.println(Boo.num); //编译器在编译时会将常量直接替换为具体的值,效率高 //相当于System.out.println(5); System.out.println(Boo.COUNT); } } class Boo{ public static int num = 5; //静态变量 public static final int COUNT = 5; //常量 } class Aoo{ public static final double PI = 3.14159; //public static final int NUM; //编译错误,常量必须声明同时初始化 }
-
抽象メソッド:
- 抽象によって変更
- メソッドの定義のみで、具体的な実装はありません({}もありません)
-
抽象クラス:
- 抽象によって変更
- 抽象メソッドを含むクラスは、抽象クラスである必要があります
- 抽象クラスをインスタンス化できません(新しいオブジェクト)
- 抽象クラスは継承され、派生したクラスである必要があります。
- すべての抽象メソッドをオーバーライドします-----------------不完全な変更を完了します
- また、抽象クラスとして宣言されます---------------------通常、このようには使用されません
- 抽象クラスの意味:
- 一般的なプロパティと動作をカプセル化する---------------コードの再利用
- すべての派生クラスに統一されたタイプを提供する-上向きのスタイル
- すべての派生クラスに統一されたエントリを提供するための抽象メソッドを含めることができます(指摘できます)。
派生クラスの動作は異なりますが、エントリは同じであり、標準を定義するのと同じです(必須の書き換え)。
エッセンスノート:
- 静的最終定数:
- 初期化中に宣言する必要があります
- アクセスするクラス名ポイント、変更できません
- 提案:定数名のすべての文字は大文字で、複数の単語は_で区切られます
- コンパイラは、コンパイル時に定数を特定の数値に直接置き換えます。これは効率的です。
- いつ使用するか:データは変更されず、頻繁に使用されます
- 抽象メソッド:
- 抽象によって変更
- メソッドの定義のみで、具体的な実装はありません({}もありません)
- 抽象クラス:
- 抽象によって変更
- 抽象メソッドを含むクラスは、抽象クラスである必要があります
- 抽象クラスをインスタンス化できません(新しいオブジェクト)
- 抽象クラスは継承され、派生したクラスである必要があります。
- すべての抽象メソッドをオーバーライドします-----------------不完全な変更を完了します
- また、抽象クラスとして宣言されます---------------------通常、このようには使用されません
- 抽象クラスの意味:
- 一般的なプロパティと動作をカプセル化する---------------コードの再利用
- すべての派生クラスに統一されたタイプを提供する-上向きのスタイル
- すべての派生クラスに統一されたエントリを提供するための抽象メソッドを含めることができます(指摘できます)。
派生クラスの動作は異なりますが、エントリは同じであり、標準を定義するのと同じです(必須の書き換え)。
補充:
- デザインルール:
- 共通の属性と動作をスーパークラスに抽出します-------------共通性を抽出します
- オブジェクトの動作が同じ
場合は、通常のメソッドとして設計しますオブジェクトの動作が異なる場合は、抽象メソッドとして設計します - オブジェクト指向8日目
- 抽象メソッド/抽象クラスに関する質問:
- 抽象メソッドの意味は何ですか?
- アップキャストが発生したときに、スーパークラスの参照を通じてメソッドを呼び出すことができることを確認してください
- 意味は指摘できることだけなので、一般的な方法としてデザインしてみませんか?
- 共通メソッドとして設計されている場合は、派生クラスをオーバーライドすることも、オーバーライドしないこともできます。また、抽象メソッドとして設計されているため、派生クラスを強制的にオーバーライド
できます----------標準になります。強制的にオーバーライドする
- 共通メソッドとして設計されている場合は、派生クラスをオーバーライドすることも、オーバーライドしないこともできます。また、抽象メソッドとして設計されているため、派生クラスを強制的にオーバーライド
- 抽象メソッドの意味は何ですか?
- 明日の言葉:
1)inner:内部的 2)outer:外部的 3)baby:孩子 4)create:创建 5)anonymous/anon:匿名 6)shoot:射击 7)next:下 8)one:一个 9)action:行动 10)enter:进入 11)timer:定时器 12)interval:间隔 13)schedule:日程表 14)task:任务 15)repaint:重新画