ネットワークオフ牛は問題5.28を行います

(1)Javaでは、クラスも同じ名前のメソッドの数を定義することができ、これらの方法の形でパラメータの数は、配列タイプまたは異なるが、戻り値は同じでなくてもよいです。この機能は、オブジェクト指向プログラミングと呼ばれています 

オーバーロード

メソッドのオーバーライド:

サブクラスでは、現象や親クラスのメソッドは、正確に同じ文が表示されます。

メソッドのオーバーロード:

同じクラスは、同じメソッド名は、パラメータ異なる現象のリストを表示されます。

 

メソッドのオーバーロードは、戻り値の型を変更し、それは、戻り値の型の独立しているため。

 

オーバーライド:メソッドのオーバーライドを

過負荷:メソッドのオーバーロード

差(2)、最後に、最終の確定について

最後の

モディファイ(キーワード)クラスは、それが別の予期せぬ新しいサブクラスは親として継承することはできません送信することができないことを意味し、最終的に宣言されている場合。したがって、クラスは抽象宣言することはできません両方とも、それは最終的に宣言されています。変数やメソッドは、彼らが使用されていないことを保証するために変更することができ、最終的に宣言しました。最後の変数が初期文で与えられなければならないと宣言され、将来の参照のみを読み取ることができ、変更することはできません。

 

最後に

最終的には任意のクリーンアップ例外処理を実行するためにブロックの提供。例外がスローされた場合はcatch節が実行されると一致し、そして、その後、制御は最終的に(もしあれば)をブロックに入ります。例外処理ブロックは、一般的に必要とされます。

メソッド名。Javaテクノロジは、ガベージコレクタにメモリから出て行く前に必要なクリーンアップ作業を行うためにオブジェクトを削除するにはファイナライズ()メソッドを使用することができます。この方法は、このオブジェクトが参照されるときに、このオブジェクトでガベージコレクタが呼び出されないことによって決定されます。これは、Objectクラスで定義されているので、すべてのクラスは、それを継承しています。サブクラスは、システムリソースを整理したり、その他のクリーンアップ作業を実行するためにファイナライズ()メソッドをオーバーライドします。()メソッドを確定ガベージコレクタがこのオブジェクトを呼び出す前にオブジェクトを削除することです。 

すべてのJavaクラスはObjectクラスからのファイナライズ()メソッドを継承します。

ガベージコレクタ(ごみcolector)を決定オブジェクトを回収する場合、オブジェクトは、()メソッドを確定実行します。

(3)地域の優先順位を使用してのJavaのアイデアを。ローカル変数とメンバ変数は、ローカル変数の呼識別子を使用して、優先使用と同じにすることができ

(4)最後のメンバ変数を使用して

亲自测试了一下,类的final成员变量必须满足以下其中一个条件

 1、在构造函数中赋值

 2、初始化赋值

あなたは、クラスを定義する必要がある場合(5)、以下の修飾子を使用することが許可されています

この問題は、クラスの定義は、これは通常の外部または内部クラスのカテゴリです言わなかったと言います。

ので、クラス外にある一般的なカテゴリ Eclipseの警告を介して、「クラスでの試験のための修飾子が正しくありません。のみ  公共、  抽象 &  最終的に 許可され、」それだけで見ることができる抽象パブリック、および最終変更。

内部クラスは、あなたが使用することができます  修正内部修正クラスのメンバ変数の修飾子、などの  プライベート、静的、  保護された修正を。

 

(6)Jdk1.7では、抽象クラスインターフェースと接触している次の文との差が補正します

界面(インターフェイス)インターフェイスのすべてのメソッドが抽象的である必要があり、抽象クラスの特別な場合であると言うことができます。この方法は、パブリック静的最終的にパブリック抽象型メンバ変数型インタフェースのデフォルトにインタフェースのデフォルト値を定義しました。さらに、インタフェースと抽象クラスは、方法が異なります。    

1.抽象クラスはコンストラクタを持つことができ、インタフェースはコンストラクタを持つことができません。  

2.抽象クラスは、通常の非抽象メソッドを含んでいてもよい、すべてのインターフェイスは、非抽象通常の方法を持っていなければならない抽象的です。

3.抽象クラスは、通常のメンバ変数を持つことができ、インターフェースは通常のメンバ変数ではありません 

4.抽象メソッド抽象クラスは、パブリックでもアクセスタイプ、保護、およびデフォルトのタイプ

抽象クラスは、静的メソッドが含まれていてもよい、静的メソッドは、インターフェイスを含めることはできません

前記抽象クラスとインタフェースは、静的メンバ変数を含むことができ、アクセス抽象クラスのタイプの静的メンバ変数は任意であるが、インタフェースで定義された変数のみのpublic static final型とすることができ、デフォルトではパブリック静的最終的なタイプであります

7.クラスは複数のインタフェースを実装することができますが、唯一の抽象クラスを継承することができます。両方のアプリケーションでも全く異なっている:複数のインターフェースは、主契約の定義モジュールとの間の通信に使用されるシステムアーキテクチャ設計方法において役割を果たす。抽象クラスは、コードの再利用は、プロジェクトのすべてのサーブレットクラスは権限と同じ方法を決定するために行われるべきであると仮定して、例えば、テンプレートメソッドデザインパターンは、抽象クラスの代表的なアプリケーションは、達成することができ、コードの態様を実現する役割を果たし、レコード・アクセス各サブで、サービスメソッドの抽象基本クラスの抽象基本クラスを決定するための完全な権限、レコードアクセスログと例外処理コードを継承するすべてのサーブレットようにログと例外処理は、その後、あなたは、抽象基本クラスを定義することができますそれぞれのビジネス・ロジック・コードの唯一のクラス。

(7)

待機()、通知()とのnotifyAll()は、ある オブジェクト・クラス・ メソッド

説明3つの方法のテキストから以下の情報を知ることができます。

1))(待機(通知)とのnotifyAll()メソッドは、ローカル方法、および最終のための方法であり、書き換えることができません。

 

2)(オブジェクトを待つために呼び出す)メソッド)は、現在のスレッドをブロックし、すなわちロック(このオブジェクトを所有している必要があり、現在のスレッドを監視することができます

 

; 3)このオブジェクトのモニターで待機中の複数のスレッドがある場合は、あなたが1つのスレッドだけで目を覚ますことができ、このオブジェクトのモニターのスレッドを待っているオブジェクトの通知()メソッドは、ウェイクアップすることができ呼び出し

 

4)コールのnotifyAll()メソッドは、すべてのオブジェクトの監視スレッドを待機している目覚めができます。

 

友人は疑問であってもよい:なぜこれらの3つの方法がThreadクラスの宣言ではなく、Objectクラスのメソッド内で宣言します

 

(もちろん、原因ThreadクラスにObjectクラスから継承されるので、呼び出し側は3つのメソッドをスレッドすることができますか)?実際には、このQ

 

質問は、各オブジェクトは、モニタ(すなわちロック)を持っているので、その現在のスレッドはもちろん、オブジェクトのロックを待機してみましょう、非常に簡単です

 

このオブジェクトで操作します。複数のスレッドを待つことができる現在のスレッドのように、現在のスレッドで動作するのではなく

 

ロックは、スレッドが運営する場合、それは非常に複雑です。

 

すでに述べたように、あなたがオブジェクトの待機()メソッドを呼び出した場合、現在のスレッドが(このオブジェクトのモニターを所有している必要があり、すなわち、

 

ロック)、そのコール待ち()メソッドは、同期ブロックの同期方法で行われる(またはシンクブロックする必要がありますか

 

同期方法)。

 

オブジェクト待ち()メソッドを呼び出し、現在のスレッド降伏の当量がこのオブジェクトを監視し、その後、待機状態に入ります、

 

から、もう一度このオブジェクトを取得するいくつかの時間のために中断し、現在のスレッドで(Threadクラスの睡眠方法をロックするためにフォローアップを待ち

 

そして、)他のスレッドを実装するために継続する機会を持ってみましょうが、それは、オブジェクトのロックを解除しません。

 

通知()メソッドは、このオブジェクトで待機している複数のスレッドがある場合、ウェイクアップ、オブジェクト監視スレッドを待っていることができます

 

モニタは、スレッド固有のウェイクアップが知られていないスレッドを1つだけ、目を覚まします。

 

同様に、オブジェクトに通知()メソッドを呼び出し、現在のスレッドがそう呼び出して、このオブジェクトのモニターを所有している必要があります

 

通知()メソッドが実行される(ブロックが同期またはメソッドを同期)またはシンクブロック同期プロセスでなければなりません。

 

nofityAll()メソッドは、すべての通知()メソッドは異なっているオブジェクトモニタスレッドを待っている目覚めることができます。

条件は(条件1にのawaitを使って、のみ)オブジェクト待ちの使用(に比べて、スレッド間の連携を実現するために)(通知)(伝統的なオブジェクトの待機を置き換えるために使用され、Javaの1.5で登場し、()に通知しています)より安全で効率的なスレッド間の協力を達成するため、このように、信号()。したがって、それはかなり一般的に、ブロッキングキューは、スレッド間の条件のコラボレーションをシミュレートするために使用され、実際には、にあなたを伝えるブログ記事にキューをブロックし、コンディションをお勧めします。

  • 条件は、基本的なアプローチは、のawait()と信号()メソッドであり、インタフェースです。
  • ロック条件がインターフェースに依存)(実質的条件コードであるlock.newConditionを生成します
  • 条件は()の呼び出しを待つ)と信号()メソッドは、ロック内で保護する必要がある、それはそれはConditonで使用しなければならないと言うことです(Lock.lock間待っています)とlock.unlock()は、(待機オブジェクトに対応します;)(通知オブジェクトに対応)(条件条件のシグナル;)signalAll状態では((のnotifyAllオブジェクトに対応)

 

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_41673515/article/details/90643129