1、相続
実装の継承が延び使用
メンバーはサブクラスによって継承できる親クラスを?
公共のメンバーは、保護されたメンバーは
継承できません。プライベートの変更、デフォルトの変更、工法を
2、メソッドのオーバーライド(優先)カバー
コンセプト:親クラスのサブクラスの再実装
- 同じメソッド名、
- パラメータリストのように
- タイプサブクラスのメソッドの戻り値は、スーパータイプまたはサブクラスのように、すべき
- 低減することができないアクセスサブクラス可視アクセス修飾子を制御する方法であって、
- サブクラスのメソッドの宣言は、より多くをスローされた例外を宣言することはできません親クラスよりも例外をスローします
3、Objectクラス
オブジェクトクラスは、すべてのクラスの親であり、いくつかの一般的な方法があるオーバーライドある
のtoString():このメソッドの結果は、出力リターンまたはログインするために使用される
(等号)を:重量物である場合、サービスロジックか否かを判断します書き込み
のhashCode()を。
補足:
==の違い等しい
==を:基本データ型との比較のために、ブール値は、他のカテゴリと比較することはできません。値の比較である
、比較のための参照型との比較は、のアドレスで
同じ==呼番号のタイプのみを使用し、デフォルトでは、実際の開発では、このメソッドをオーバーライドします:等号
Taskクラス:
1、エンティティクラス宣言学生、属性、名前、年齢、ノー(学生番号)、メソッドのオーバーライドが等しい
2を、生徒がクラスの操作を宣言し、方法があります:
学生の配列から、名前や科学に基づいていいえ判決は、学生にの存在を与えられていない
3テストを
パブリッククラス学生{ プライベート文字列名; プライベートint型の年齢; プライベートint型がありません。 パブリック文字列のgetName(){ 名前を返します。 } 公共ボイドのsetName(文字列名){ this.name =名。 } 公共INT getAge(){ 戻り年齢; } 公共ボイドsetAge(int型の年齢){ this.age =年齢。 } 公共INT getNo(){ ないを返します。 } (NO INT)公共ボイドsetNo { this.no = NO。 } }
パブリッククラスStudentmaker { パブリックブール等しい(生徒A、生徒B){ IF(a.getName()。等号(b.getName())){ IF(a.getNo()== b.getNo()){ リターン真; }他{falseを返す;} } falseを返します。 } }
パブリッククラスSudenttest { パブリック静的無効メイン(文字列[] args){ // TODO自動生成方法スタブ Studentmakerのstudentmaker =新しいStudentmaker()。 学生S1 =新しい学生(); 学生S2 =新しい学生(); s1.setName( "suxiao"); s1.setAge(21)。 s1.setNo(123)。 s2.setName( "suxiao"); s2.setAge(21)。 s2.setNo(123)。 System.out.print(studentmaker.equals(S1、S2))。 } }
図4に示すように、結合
ダウンキャストとアップキャスト
アップキャスト:サブタイプのスーパータイプ、自動変換する
ダウンキャスト:キャスト構文を使用して、データ・タイプへの変換親からタイプ()
静的(早い):コンパイル時にプロパティまたはメソッド静的、最終メンバーまたは修正方法を訪問する人を決めることができます
ダイナミック(後半):実行時に非静的、プロパティやメソッドを訪問する者を決定します
instanceofのキーワード
instanceofはJavaの二項演算子には、オブジェクトが残っている、右はクラスであり、オブジェクトが作成されたオブジェクトの右側クラスまたはサブクラスにあるときに、trueを返し、そうでない場合は、falseを返します。
クラスの例には、直接または間接的に、例えば、サブクラス自体のすべてのインスタンスを含みます
instanceofは、明示的に左の型を宣言し、右のオペランドが同じタイプまたは継承の存在でなければならない、それ以外の場合はエラーをコンパイルします、同じ継承ツリーにするために、その必要性
オペレータほとんどのケースを使用しては意気消沈、その後のシーンにあります、安全保障のそれ以外の場合は、既知のタイプ
:使用推奨
メソッドのステートメントは、親の型として使用されるパラメータ1のとき、
親を使用して、2、メソッドの戻り値の型は、できるだけ多くを入力
。5、スーパー
最初の使用:(静的メソッドを除く)は、従来の方法でスーパーコール親クラスのプロパティまたはメソッドである。
第2の使用:コンストラクタサブクラスでは、スーパー明示的(親クラスのコンストラクタを呼び出します)
図6に示すように、クラス初期化シーケンス
サブクラスコンストラクタメソッド呼び出しは、最初の親クラスのコンストラクタを呼び出す際にされ
、順次実行される:
コードの親クラスの静的ブロック
サブクラス静的コードブロック
親コードブロック
の親クラスのコンストラクタ
コードブロックサブクラス
のサブクラスのコンストラクタ
目的:初期化の順序を学びます
図7に示すように、最終的な
使用シナリオと意義:
7.1変更する変数は、定数、一度初期化を変更することはできません表し
代入する前に、使用中であることを宣言することができ、初期値を割り当てる:ローカル変数の方法
、あなたはまた、初期値文を割り当てることができ、属性クラスのメンバーをまたはコードブロック構成方法で割り当てることができ
最終的な修正された参照型の変数場合、それは再割り当てすることはできないが、非最終的な部材の一方を変更することができます
名前の最終的な変数は、一般に、すべて大文字であり、そして使用が分離するアンダー
7.2改質方法を、表現はサブクラスによってオーバーライドすることができない
クラスを表す7.3修飾クラスが継承することができません
自動車には、次の要件を車を定義します
(A)の特性は以下のとおりです。車は、ブランド(文字列型)、カラー色(文字列型)と速度速度(ダブルタイプ)ブランド。
(B)少なくともコンストラクタ引数を提供する(ブランド及び色の要件は、任意の値に初期化されてもよい、速度の初期値は0でなければなりません)。
(C)プロパティのゲッター/セッターメソッドを提供します。注意:車のブランドは、一度初期化を変更することはできません。
(D)メソッドは、車が特徴を記述された印刷ステートメントを実行すると、実行()を定義します。
テストクラスVehicleTestを定義し、「ベンツ」のために、その主な方法でブランドを作成、色「黒」の車。
パブリッククラスの車{ 民間最終文字列のブランド。 プライベート文字列の色。 プライベート倍速。 公共駐車(列A、列B){ this.brand = A。 this.color = B。 this.speed = 0; } パブリック文字列thisはgetBrand(){ 戻りブランド; } パブリック文字列GETCOLOR(){ 戻り色。 } 公共ボイドsetColorを(文字色){ this.color =色。 } 公共ダブルgetSpeed(){ 速度を返します。 } 公共ボイドsetSpeed(倍速){ this.speed =速度; } }
パブリッククラスCartest { パブリック静的無効メイン(文字列[] args){ // TODO自動生成方法スタブ =新しい車車車(「ベンズ」、「黑色」)。 実行実行=新しいファイル名を指定して実行(); run.run(車)。 } }
ファイル名を指定して実行クラス{パブリック ます。public void RUN(車C){ System.out.printlnは(c.getColor()+ "" + c.getBrand()+ "に" + c.getSpeed()+ "実行速度")。 } }
セダンカテゴリサブクラスカー、以下のように(2)Vehicleクラスの要件は定義しています。
(A)は、プロパティ乗用車番号ローダー(int型)を持っています。
(B)コンストラクタを提供するには、クラス属性を初期化します。
(C)、実行()、print文を実行している車で記述された関数を再定義します。
(D)は、色は、2人用の乗用車の数「赤」である「ホンダ」のためにそのメイン方法でブランドを作成するために、テストクラステストを定義します