20182301 2019-2020-1「データ構造とオブジェクト指向プログラミング」第5週の学習の概要
コンテンツの概要を学びます
- 受け継ぎます
- 継承は、プロセスは、既存のクラスから新しいクラスを派生であります
- 継承の目的の一つは、既存のソフトウェアを再利用することです
- 親と子のクラス間の継承がある-に確立された関係
- 継承クラスのフォーマット
- {}クラスの親クラス。
- サブクラスは親クラスを{}延びています。
- インタフェース親クラス{}。
- サブクラスは} {親クラスを実装します。
- スーパーと、この
- スーパー:アクセスが親スーパーによって達成することができる、現在のオブジェクトの親を参照するために使用されます
- この:独自の基準点
- コンストラクタ
- サブクラスは、親クラスのコンストラクタを継承することはできません
- 親クラスのコンストラクタのパラメータが明示的に適切なパラメータリストを持つスーパークラスとサブクラスのコンストラクタで聞いコンストラクタsuperキーワードを呼び出す必要がありますと
- 引数なしのコンストラクタsuper呼び出し親クラスのコンストラクタが必要とされていない使用されていない場合は、サブクラスが自動的にパラメータなしで親クラスのコンストラクタを呼び出します。
- クラス階層:サブクラスを導出し続けることができ、親クラスをサブクラス化
- クラス階層のパブリックプロパティは、上できるだけ高く配置する必要があります
- オブジェクトクラス
- 標準ライブラリjava.langパッケージ内のJavaオブジェクトのクラス定義
- Javaのすべてのクラスは、オブジェクトクラスから派生しています
- 各Javaクラスは、のtoStringとequalsメソッドを継承します
- 名前が表示されていない場合、その親クラスの定義は、ので、このクラスは、オブジェクトクラスから継承したとき。このように、オブジェクトのクラスは、クラス階層のルートクラスです。
- この方法は、オーバーライド:同じ名前と同じシグネチャで定義された親クラスのメソッドで定義されたサブクラスを
- サブクラスは、親クラスのメソッドを再定義から継承することができます
- この方法は、最終的な(究極)修飾子によって定義することができます。サブクラスは、究極のメソッドをオーバーライドすることはできません
- 隠された変数は、お勧めできませんことに注意してください
- 抽象クラス
- 抽象クラスはインスタンス化することはできませんが、彼の概念を定義するために他のクラスによって提供されます
- 親クラスのすべての抽象メソッドをオーバーライドする必要があり、親クラス、抽象クラスから派生した、または派生クラスは、まだ抽象メソッドです。
- 抽象クラスのサブクラスは、クラスは、抽象から継承親の具体的な定義を提供します - この方法は、特別な事情が上書きされます
- 可視
- プライベートメンバーはまた、サブクラスによって継承が、直接名前で参照することができません。しかし、彼らは間接参照することができます。
- デザインの継承
- すべてのフォークがある関係でなければなりません。サブクラスは、より具体的な親クラスのオブジェクトである必要があります
- 再利用のための設計上のクラス階層は、あるいは将来的に再利用することができます
- ときに彼らの類似点を見つけるために、問題のドメインにクラスとオブジェクトをマーク。より高いレベルでの一般的な、より一貫性の維持。
- パフォーマンスを満たすために適切にサブクラスオーバーライドメソッド
- サブクラスに新しい変数を追加するが、継承された任意の変数を隠していない需要
- 各クラスを許可すると、自身のデータを管理します。したがって、コンストラクタメソッド呼び出しを起動するスーパー基準を用いることによってオーバーライドすることができます
- デザインクラス階層は、アプリケーションの要件を満たすために、将来的には、使用方法に注意を払う必要があります
- 現在でも、それは使用しませんが、また、サブクラスでは、適切な一般的なtoStringメソッドをオーバーライドし、将来の派生クラスの問題が発生しないため、この種のに等しいです
- クラス階層内のクラスの特定のクラスに共通のインターフェースを指定するには、抽象クラスを使用します
- 可視性改質剤は、派生クラスへのアクセスを提供するために、カプセル化の原則から逸脱することなく、注意して使用します。
教科書の学習と問題解決のプロセス
質問1:一般的にコンストラクタメソッドには何が書かれていますか?
問題1つのソリューション:
- コンストラクタは、その特異性が主に次の側面に反映され、この方法の特別なクラスです。
- コンストラクタメソッドの名前と同じクラスの名前。
- コンストラクタノーリターンタイプ。
- 主な役割は、クラスオブジェクトの初期化のコンストラクタを完了することです。
- コンストラクタを明示的にプログラマによって直接呼び出されることはありません。
- 新しいオブジェクトクラスを作成すると、新しいオブジェクトが初期化されるため、システムが自動的にクラスのコンストラクタを呼び出します。
- 質問2:どのような良い方法を書き換えますか?
- 問題2ソリューション:
- 実装を書き換え方法のサブクラスは、戻り値を再書かれている親クラスへのアクセスを許可し、パラメータを変更することはできませんです。その同じシェル、コア書き換え!
- 必要に応じて、彼らの行動で特定の定義サブクラスの利益を書き換えます。必要に応じてそのサブクラスは親クラスを実装することができます。
- オーバーライドメソッドには、チェック例外をスローしたりオーバーライドされたメソッドよりも新しい広い例外を宣言することはできません。例:親クラスは、チェック例外IOExceptionが断言するが、例外はIOExceptionが親クラスであるため、サブクラスは、IOExceptionが異常を投げることができる例外の例外をスローする場合、このメソッドをオーバーライドすることはできません。
- 質問3:イテレータの使用?
- 質問3ソリューション:
- 反復子は(イテレータ)
イテレータは、オブジェクトである、デザインパターンであり、それは選択された標的配列を横断することができ、開発者は、シーケンスの基本構造を理解する必要はありません。それは小さな価格を作成したので、イテレータは、多くの場合、「軽量」オブジェクトと呼ばれています。
Javaのイテレータ機能は比較的単純で、かつ一方向にのみ移動することができます。- ()コンテナを返し、イテレータを使用するIteratorが必要です。場合のシーケンスの最初の要素を返す最初のコールイテレータnext()メソッド、。注:イテレータ()メソッドは、java.lang.Iterableインタフェースはコレクションを継承されています。
- シーケンス内の次の()を取得するには次の要素を使用してください。
- シーケンスの要素があるかどうかをチェックするためのhasNext()を使用してください。
- 削除使用する()削除イテレータ新しい要素を返します。
イテレータJavaのイテレータは、反復子リストの設計のための最も簡単な実装は、より多くの機能を持っている、それはあなたもリストから要素を挿入し、削除することができ、両方の方向にリストをトラバースすることができます。
イテレータアプリケーション:
list l = new ArrayList();
l.add("aa");
l.add("bb");
l.add("cc");
for (Iterator iter = l.iterator(); iter.hasNext();) {
String str = (String)iter.next();
System.out.println(str);
}
/*迭代器用于while循环
Iterator iter = l.iterator();
while(iter.hasNext()){
String str = (String) iter.next();
System.out.println(str);
}
*/
プロセスで解決コードのデバッグおよび問題
- 質問1:ブックとブック2の違いは?
- 問題1つのソリューション:フリップ方法、初期状態にランダムコイン。
- 質問2:アカウントは無料ですが、なぜでしょうか?
- 問題2ソリューション:XXXXXX
- 質問3:
コードホスティング
コードブック
(ファイル名を指定して実行は、スクリーンショットのstatistics.shスクリプトを結果)
先週試験間違った質問の概要
今週は、11月の休日、ありませんので、間違った質問をしています。
ペアピアレビューと
- 学習課題やブログワース:
- イテレータとロビンのために?(2303年)
- toStringメソッドは生成することができますのprintlnメソッドを使用して、オブジェクトのクラスの削除を呼び出しますか?(2311年)
- コードは、学習や問題価値があります:
- ランダムランダム、大文字と小文字を区別しない数学乱数。
- nextChar(2303)を使用する場合、文字の入力方法
- XXのポイント:スコアに基づいて、私はこのブログのレートを与えます。次のようにスコアは以下のとおりです。
- 1分間の適切な使用のマークダウン構文
- 完全な機能テンプレート1分
- 教科書の学習と問題のプロセスに3点を解決
- 5分でのコードのデバッグおよび問題解決プロセス
- 感情、経験は大きな空の1分を残しません
- 絶妙なタイポグラフィ1分
- プログレスバーは、学習時間を記録し、1ポイント改善しました
- コメントは真剣に、私は1分の問題やブログのコードを指摘することができます
- 1分で、深さ、間違った質問を学習
- ペアは、本物の1分を学びます
コメントは、学生のブログやコードを持っていました
- ペア今週の学習
- 20182326
- ペアの写真
- 结对学习内容
- 完成Java密码学相关内容的学习
- 远程操控进行微信联系,学习
その他(知覚、思考、など、別売)
「Javaで考える」書いた:「プログラムを開発する場合、最良の方法は、 『サービス・プロバイダー』としてのオブジェクトが提供するサービス番号を呼び出すことにより、所望の目的を達成するためのプログラムをオブジェクトを想像することである。」
私は自分自身を訓練する必要がありますこの考え方。
学習の進捗バー
コードの行の数(/蓄積を追加) | ブログ量(/蓄積を追加) | 学習時間(/蓄積を追加) | 重要な成長 | |
---|---|---|---|---|
目標 | 5000行 | 30 | 400時間 | |
最初の週 | 69分の69 | 2/2 | 30/30 | |
二三週間 | 598分の529 | 3/5 | 55分の25 | |
4週 | 300/1300 | 2/7 | 80分の25 | |
5週目 | 2/9 | 110分の30 | リモートとのインタフェース |
最後に、「計画的な学習の時間」と「実際の学習時間」を記録してみてください、あなたが計画する能力を向上させることができるかどうかを確認。この研究は、非常に重要な仕事であるにも便利です。
推定式消費:Y = X + X / N 、Y = XX / Nを、 より頻繁に訓練し、X、Yが閉じます。
参考:なぜそんなにハード、ソフトウェアエンジニアリングソフトウェアを推定され、ソフトウェアエンジニアリングの推定法
プランの学習時間:30時間
実際の学習時間:30時間
この状況を改善するために:
今週は、より詳細な思考であることをトラックに感じています参考資料
- 書き換えとリロード
- Javaクラスのインスタンスを作成するためのいくつかの方法
- どのような効果は、静的および決勝でのJavaの使用により達成され、