この本は冗長すぎるといつも感じていましたが、要約を読んだ後、後で思い出すのが簡単になるので、怠惰にネットで他の人の要約を探したかったのですが、適切な要約が見つからなかったので、できるだけ良く要約するために最善を尽くさなければなりませんでした。
オブジェクト入門
オブジェクト入門を見たときにこの本のことを思い出しました
目次:
1.1 抽象化プロセス
1.2 それぞれオブジェクトにはインターフェースがある
1.3 すべてのオブジェクトはサービスを提供する
1.4 隠蔽された具象実装
1.5 具象実装を再利用する
1.6 継承
1.7 多態性を備えた交換可能なオブジェクト
1.8 シングルルート継承構造
1.9 コンテナ
1.10 オブジェクトの作成と存続期間 問題点
1.11 例外処理: エラーの処理
1.12 同時プログラミング
1.13 Java とインターネット
1.14 概要
これを読むと、ようやく Java に習熟できたような気がします。ただし、この章では、開発の概要を含む OOP の基本概念を紹介するだけです。オブジェクトの重要性を理解します。
1.1 抽象化プロセス
他の言語の欠点を通してオブジェクト指向言語の利点を説明します。
アセンブリ言語は基盤となるマシンをわずかに抽象化したもので、命令型言語(C、BASICなど)はアセンブリ言語を抽象化したもので、アセンブリ言語はコンピュータのハードウェアを直接制御し、命令型言語はコンピュータの構造に基づいて問題を解決します。 OOP 言語は問題の構造に基づいて問題を解決し、特定の種類の問題に限定されません。
1.2 各オブジェクトにはインターフェースがあります
インターフェース:特定のオブジェクトに対して行うことができるリクエストを決定しますオブジェクト:型名
テキストの説明を見ると、哲学的な問題に発展しています, from 以下の例がわかりやすいですね。
Light lt = new Light(); //对象lt.on;//接口向对象发出请求
1.3 各オブジェクトはサービスを提供します
利点: 1. ソフトウェアの凝集性の向上に役立ちます 2. 各オブジェクトはタスクを適切に完了できますが、そうではありませんそれ以上のことをしようとしないでください。
理解: 歌詞の表示、再生、一時停止、および背景表示 (サービス) を備えた音楽プレーヤーを設計します。現時点では、1 つのオブジェクトを提供するだけでなく (それ以上のことを実行しようとするわけではありません)、次のことが可能です。 3 つのオブジェクトを提供し、3 つのサービスを完了し、3 つのオブジェクトが 3 つのサービスを提供して音楽プレーヤー (Cohesion) を完成させます。
1.4 隠された特定の実装
私の目標は、迅速なアプリケーション開発を実現することです。フレームワークはメソッド呼び出しを提供するだけで、残りは隠されています。私の通話には影響しません。
アクセス許可: public > protected (パッケージ + 基本クラス) > パッケージアクセス許可 (キーワードがない場合のデフォルト) > 特定の実装を再利用
クラス内で継承または合成を使用します。
継承----関係がある ライチは果物
の組み合わせ----関係がある うつ伏せで寝る方法がある
1.6 継承
親クラスからサブクラスを派生させ、サブクラスは親クラスのデータ属性と動作を吸収し、新しい機能を拡張できます。
1.7 ポリモーフィズムによる交換可能なオブジェクト
class Shape{
draw();
erase();
move();
getColor();
setColor();
}
void doSomething(Shape shape){
shape.erase();//...shape.draw();
}
Circle circle = new Circle(); //父类为ShapeTriangle triangle = new Triangle(); //父类为ShapeLine line = new Triangle(); //父类为ShapedoSomething(circle);
doSomething(triangle);
doSomething(line);
对doSomething的调用会自动地正确处理,而不管对象的确切类型(可互换对象)。
doSomething(Shape shape)的执行是指你是Shape类或者父类为Shape,而不是你是Circle类就执行这样,你是Triangle 类就执行那样。理解了可以去看设计模式之策略模式。
这里还涉及到向上转型,如下图:
1.8 单根继承结构
1、所有类都继承自单一的基类
public class JianCheng extends Object { }
public class JianCheng { public static void main(String[] args) { JianCheng jiancheng= new JianCheng(); System.out.println(JianCheng instanceof Object); } }
Object 2 のデフォルト継承のデフォルト継承を説明し、すべてのオブジェクトが特定の関数を持っていることを確認します
Object 例: clone( )、equals(Object obj)、toString() およびその他のメソッド。
3. ガベージコレクションが簡単になります
オブジェクトにはその (オブジェクト) 型情報があることが保証されているため、オブジェクトの型を決定できないことによるデッドロックは発生しません。これは、システムレベルの操作 (例外処理など) にとって重要です。
1.9 コンテナ
List (シーケンスの保存に使用)、Map (連想配列とも呼ばれ、オブジェクト間の関連付けの確立など) など、コンテナ (コレクション) と呼ばれる他のオブジェクトへの参照を保持します。 )、セット (各オブジェクト タイプを 1 つだけ保持)、およびキュー、ツリー、スタックなどのその他のコンポーネント。
ArrayList と LinkedList を比較すると、前者は 配列の形をしており、
要素にランダムにアクセスするコストはほとんどかかりませんが、挿入と削除の操作には多額のコストがかかります。後者はリンクされたリストの形式になっているため、挿入と削除の操作が簡単になります。 1.10 オブジェクトの作成と有効期間
スタックとヒープに配置されたオブジェクトの違いを理解する
位置を考慮する、 はオブジェクトの正確な数、存続期間、タイプを知る必要があるため、
の柔軟性が犠牲になります。ヒープ -- オブジェクトはメモリプール内に動的に作成され、オブジェクトの数、ライフサイクル、タイプは実行時にのみわかります。動的管理では、ヒープに記憶領域を割り当てるのに多くの時間がかかりますが、記憶領域の作成と解放は非常に便利です。
Javaは、newキーワードを使用してオブジェクトを作成する動的メモリ割り当て方法を採用し、オブジェクトの生存時間を決定し、「ガベージコレクタメカニズム」を自動的に使用します。 「破壊してください。
1.11 例外処理: エラーの処理
Java コードが正しい例外処理コードを記述していない場合は、コンパイル時エラー メッセージが表示されます。例: IOException、ClassCastException (クラス変換例外)、NullPointerException (null ポインタ例外) など。
1.12 同時プログラミング
複数のタスクを同時に処理するという考え方、つまりマルチスレッド操作です。
同期マルチスレッド操作、共有リソースには隠れた危険があります。 Aは元々a=Love Youを使いたかったのですが、あるスレからa=hate youになってしまいAが使ってしまったのでAの告白は確実に失敗します。
1.14 概要
最初の章はすべて理論的な知識であり、多くの知識ポイントは明らかに非常に簡単ですが、長い議論により理解するのが難しくなります いくつかの実践的な情報もありますが、それが混在しています。綿毛が多すぎる。
以上がJava プログラミングのアイデアと手法のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。