最近ではほとんどのJava言語は、基礎を固める、ここでそれを記録する前に本の内容を記念して、再度の一部を学びます。
A、クラスとオブジェクト
1. Javaのデフォルト:データ型のフィールド参照がnullの場合、データ型の値フィールドのデフォルト値は0で、デフォルトのブール型のデータフィールドが偽である、char型のデータ・フィールドのデフォルト値は「\ U0000」。
ここで、Javaはメソッド内のローカル変数にデフォルト値を割り当てません。
2.可視性修飾子:private修飾子は、クラスのメンバーに適用することができ、かつ公衆クラスのメンバーやクラスで使用することができます。パブリックとプライベートのローカル変数になります使用改質剤は、コンパイルエラーが発生します。
3.変数のスコープ:スコープインスタンス変数と静的変数は、クラス全体です。
4.this声明:javaの指定された、これは他の実行文の前に表示される必要があり、コンストラクタ内のステートメント。
5.パッケージ:オブジェクトとして使用されていない基本データ型のパフォーマンスを考慮してのjava。便宜のために、包装の種類に応じた各種の基本的なデータを提供し、java.langパッケージ。
引数なしなし包装コンストラクタは、数値文字列を構築パッケージによって表される基本データ型または値を使用することはできません。以下のような:新しいダブル(4.2)、または新しいダブル( "4.2")。
「充填」または呼ばれるラッパークラスに対応するプリミティブ値の間の変換処理「アンパック。」
6.Stringクラス:文字列変数が格納されている文字列は不変オブジェクト値がストレージ内の文字列オブジェクトの文字列であり、参照します。しかし、条約は、この用語は、多くの場合、文字列変数の値の文字列、文字列、および文字列オブジェクトを表すために使用されます。
7.数字又は文字列との間の相互変換:Double.parseDouble( "5.44"); String.valueOf(5.44)。
8.コンストラクタチェーン:いずれの場合も、クラス構造体のインスタンス最後に継承階層に沿ってコンストラクタ呼び出されるまでコンストラクタに沿っては、このプロセスが継続し、親クラスは、すべてのチェーンを継承呼びますこれまでのところ。
ここでsuperステートメントは、サブクラスのコンストラクタのスーパー文でない場合、コンパイラが自動的にの1行目に「superステートメントの行を追加する。」う、理解することができます
サブクラスは、Appleが明示的に引数なし独自のデフォルト呼び出していないinstantiating'llコンストラクタメソッドを定義していません。クラスが継承されている設計するときに、それはこのような状況を回避するために、引数なしのコンストラクタメソッドを提供するのが最善ですコンストラクタの前に、引数なしのコンストラクタは、親クラスのフルーツを呼び出しますが、親クラスのコンストラクタの定義はパラメータを持っているので、コンパイラは引数なしでデフォルトコンストラクタを提供することはありません、呼び出しが失敗し、コンパイラが間違って行くでしょう。コードは以下の通りであります:
1 パブリック クラス Appleが延びフルーツ{ 2 } 3 4 クラスフルーツ{ 5 公共フルーツ(文字列名){ 6 のSystem.out.printlnを( "フルーツのconstrctorが呼び出されました" ); 7 } 8 }
また、superステートメントは、通常の親クラスを呼び出すことができ、親クラスのコンストラクタを呼び出すことはできません。
なお、唯一の暗黙の呼び出しサブクラスのコンストラクタ(ここでは3例が可能..表示がコンストラクタのパラメータで指定され、B引数を指定しないと、Cは工法を与えられていないコンストラクタを示しています。コンパイラは、引数なしのコンストラクタを与えられたとき)、デフォルト、
すなわち、サブクラスがインスタンス化され、コンストラクタがチェーンと呼ばれます。明示的な呼び出しサブクラス(例えば、スーパーの文)を構築、それは、引数なしの親クラスでコンストラクタを呼び出すことはありません。
9.書き換えの方法:連続して存在する、すなわち、サブクラスは親クラスを書き換えます。オーバーライドされたメソッドとの間に(関数名とパラメータリストが正確に同じでなければならない)同じシグネチャを有していなければならないが、戻りは、同じまたは互換性のある型であってもよいです、
戻り値の型のサブタイプの戻り値の型の親プロセスは、サブクラスを書き換える方法と互換性のある書き換えることにします。Java構文エラーを回避するためにマークされて書き換え。
パブリック クラスサークル延びGeometricObject { // 他の方法が @Override パブリック文字列のtoString(){ 戻り スーパー + + "\ nradiusが").toStringを(半径。 } }
その中でも、静的メソッドをオーバーライドすることはできません。親クラスの静的メソッドをサブクラスで再定義されている場合ので、その後、親クラスの静的メソッドが非表示になります。しかし、あなたはまだと呼ばれる(親クラスの静的メソッド名の名前)を使用することができます。
10.メソッドのオーバーロード:関数名は同じではなく、異なるパラメータリストでなければなりません。
すべてのJavaクラスは、Objectクラスから継承し、オブジェクトのtoString()メソッドを持っています。
11.多型は:サブクラスが「より大きい」ので、AはBの親である場合、親クラスは、次いで、Aは、Javaタイプの変数にオブジェクトBを参照するために使用することができ、Bが含まれ、コンパイラが自動的に意志Bは無視できる部分に属していません。
多型は、親がObject型のサブタイプの変数を参照できることを意味します。新しいオブジェクトインスタンス、場合には、あるの宣言された型の親タイプが、実際の型はサブタイプです。
動的バインディング:参照変数の方法は、その実数型によって呼び出される特定のメソッド呼び出しを決定します。JVMは、あなたが実現を見つけたら、我々は検索を停止、このメソッドから探し(クラスオブジェクト)ルートクラスのサブクラスである必要があり、あなたが呼び出すことができます。
しかし、変数の実際のタイプ、実行時にJVM動的バインディング方法によって決定される特定のメソッド呼び出しが、ということに留意すべきです。しかしながら、参照変数の宣言型は、コンパイラ決定コンパイル時間と一致する方法を。
12.明示的な変換:親クラスの明示的な参照変数の対応するサブクラス参照型には、コンパイラは、コードの意図を理解させます。
宣言参照変数の型は、コンパイル時にどのメソッドが一致を決定し、親型と呼ばれるサブタイプが存在しない可能性のある方法であるため、目的は、明示的な変換、コンパイルエラーが発生を回避することです。
さらに、オブジェクトメンバアクセス演算子は次のようにコードで具現化、キャスト演算子の優先順位よりも高い優先順位を有します。
((サークル)オブジェクト).getArea();
ときに明示的な型変換の基本的なタイプの値は、文は新しい値と変わらず、変数の元の値を返します。しかし、明示的に参照変数が変換されて、新しいオブジェクトを作成できません。
。1つの int型年齢= 45 ; 2 バイト NEWAGE =(バイト)年齢; // ニューエイジ新しい値が作成されます。 3 。4オブジェクトO = 新しい新しいサークル(); 5円C =(サークル)0; // 参照変数oおよび同じオブジェクトを参照cは。これは、任意の新しいオブジェクトを作成しません。
13.方法と==比較演算子に等しい:基礎となるデータ型の2つの値を比較するための比較演算子は、同じであるか、または二つの基準可変ターゲットアドレスは、同じオブジェクトを指しているか否か、すなわち、同じです。
Objectクラスは、デフォルトの方式が実装されて等しいです:
1つの 公共 ブール等しい(オブジェクトobj){ 2 リターン(この ==のOBJ)。 3 }
しかし。この方法は、2つのオブジェクトの内容を比較するためのJava APIの多くのタイプに書き換えられ等しいが等しいです。java.lang.Stringでとjava.util.Dateなど。
署名の書き換え機能が同一でなければならないので、即ち、パラメータのタイプを受信するオブジェクトのequalsメソッドを上書きします。
1 @Override 2 公共 ブール等しい(オブジェクトo){ 3 であれば(O instanceofの丸) 4つの 戻り半径== ((サークル)O).radius。 5 他の 6 の復帰 はfalse ; 7 }
14.可視性改良剤
修飾子 | 同じクラス | 同一包中 | 異なるサブクラスパケット | 異なるクラスのパッケージFeizi |
パブリック | 1 | 1 | 1 | 1 |
保護されました | 1 | 1 | 1 | 0 |
デフォルト | 1 | 1 | 0 | 0 |
プライベート | 1 | 0 | 0 | 0 |
15.コンストラクタの概要:
構築されたクラスのコンストラクタ、プロパティ、およびクラスは異なる方法の例として、サブクラスは親クラスのコンストラクタを継承していない、彼らは唯一のスーパー文によって明示的なコンストラクタサブクラスから呼び出すことができます。
もちろん、コンストラクタのオーバーロードや親クラスのコンストラクタを呼び出すことができますコンストラクタは、呼び出しは、コンストラクタの中でなければならない最初の文が表示されます。
この呼び出しがなければ、コンパイラは最初の文のスーパー()デフォルトのコンストラクタは、引数なしで親クラスのコンストラクタを呼び出すことになります。
第二に、例外処理
ゼロ1.浮動小数点除算例外ではありません。
2.例外処理の基本的な利点は、ある方法が、エラーを検出する際に呼び出されるからエラーの呼び出し元の処理で分離します。
システムエラー、例外およびランタイム例外:クラス3.java異常は、次の3つのタイプに分けられます。
JVMシステム・エラーがスローされ、彼はErrorクラスを表明しました。
例外クラスは、クラスにClassNotFoundExceptionは、IOExceptionクラスなどを含む、異常で表されます。
異常動作のRuntimeExceptionクラスを表す場合、それはエラーコードを記載しています。ArithmeticExceptionクラス、NullPointerExceptionがクラスはIndexOutOfBoundsExceptionクラス、例外:IllegalArgumentExceptionクラスなど。
これでは、ランタイムシステムエラーや例外とそのサブクラスは呼ばれている免除異常、他のすべての例外は、例外を押収されると呼ばれています。Javaは、すべての必要が必見の異常検出はならないメソッドを宣言し、その最初のtry catchブロック処理を使用して。
任意のコードが免除異常が発生する可能性があるため、彼らのためにすべてのJavaは必須ではありません。
あれば何の宣言はそのサブクラスすることができ、もはや珍しいの文を書き換えていないためにその時間、その後、親クラスのメソッドで例外を確認していないだろう、ということに注意してください。
4.例外トラップ:さまざまな例外クラスが共通の親クラスから派生することができ、その後、catchブロックは、例外オブジェクトの親クラスを取り込むことができる、それはまた、親クラスのすべてのサブクラスの例外オブジェクトをキャプチャします。
したがって、catchブロックの重要性の順序は、catchブロックのサブクラスは空になり、その場合には異常なcatchブロックサブクラス、目の前で親クラスの例外のcatchブロックならば、それはコンパイルエラーが発生します。
5.チェーンされた例外:例外が上方にcatchブロックを撮影し続けるスローされます。コードは以下の通りであります:
。1 キャッチ(例外EX){ 2 スロー 新新(「法1からの新情報」、EX)例外が// ここで二人は例外スロー 3 }
コンパイラがそれらをキャッチするように強制することができるように6.カスタム例外クラスには、被験者は、最良の異常を作ることになります。
同時にエラーを回避するために7のtry-と、リソース教材文のコードのcatchブロックを簡素化します。
3つの抽象クラスとインタフェース
1.クラスは抽象メソッドが抽象クラスである必要があります含まれていますが、抽象クラスは、すべての抽象メソッドはできません。保護されたとして、抽象クラスのコンストラクタが定義されています。抽象メソッドは非静的です。
親クラスがコンクリートのサブクラスである場合であっても、このサブクラスは抽象的かもしれません。抽象クラスはインスタンス化することはできません。
2. 構造のクラスに似たインターフェースの一種で、定数のみと抽象メソッド、静的メソッドとメソッドだけでなく、デフォルトが含まれている場合。
すべてのデータフィールドのインターフェイスはあるのpublic static final修正、インターフェイスの方法がある公共の抽象修正。
これらの修飾子のJavaは、書き込みインターフェースコードが省略されていることができますが、サブクラスは、publicとして定義されたメソッドを実装する必要があります。
また、java8が始まった、とデフォルトのインターフェイスメソッドのpublic staticメソッドの導入。以下のような:
1 パブリック インターフェースA { 2つの // デフォルトのインターフェイスメソッドを 3 パブリック デフォルト ボイドのdoSomething(){ 4 のSystem.out.println( "DO何か" ); 5 } 。6 。7 // インターフェースパブリック静的方法 。8 パブリック 静的 INT getValue(){ 9。 リターン 0 ; 10 } 11 }
自動的にすべてのデータフィールドの3オブジェクトクラスのcloneメソッドシャローコピー。
4.クラスは、親を継承するが、1つまたは複数のインターフェースを実装することができる。インタフェースは、一つ以上のインタフェースを継承するが、クラスを継承することができません。
変数 | コンストラクタ | 方法 | |
抽象クラス | アンリミテッド | コンストラクタチェーン、新しいものではありません | アンリミテッド |
インターフェース | すべての変数はのpublic static finalでなければなりません | コンストラクタない、新しいものではありません | 抽象例示的な方法は、公開、およびパブリックデフォルトメソッドpublic staticメソッドを含んでいてもよいです |
第三に、ジェネリック
マルチスレッド、第四