[JAVA]これがJava-継承


コンセプトの継承

  • 親クラスのメンバーを子クラスに渡します.
  • 開発されたクラス
  • を繰り返し使用することで、コードの繰り返しを減らすことができます.
  • 親を変更すると、すべての子が変更されるため、メンテナンス時間が短縮されます.
  • の親クラスにprivateを持つメンバーは継承から除外されます.
  • 親クラスのデフォルト値を持つメンバーは、親クラス、子クラスが他のパッケージにある場合も除外されます.
  • class 자식클래스 extends 부모클래스{
    	// 멤버
    }

    親ジェネレータの呼び出し

  • 子オブジェクトを作成する場合は、まず親オブジェクトを作成し、次に子オブジェクトを作成します.
  • 親ジェネレータは、サブジェネレータの最初の行で呼び出されます.(super():親のデフォルトジェネレータを呼び出します.)
  • super()を省略すると、コンパイラはsuper()を自動的に追加するため、親のデフォルトジェネレータが存在する必要があります.
  • 親クラスのデフォルトの作成者がなく、パラメータを持つ作成者のみがいる場合は、サブ作成者からsuper(パラメータ値)を明示的に呼び出す必要があります.
  • メソッドの再定義


    メソッドの再定義(@Override)

  • overridingとは、継承されたコンテンツがサブクラスに一致しない場合、サブクラスで同じメソッドを再定義することを意味します.
  • overlighting注意点
  • 親と同じ戻りタイプ、メソッド名、パラメータのリストが必要です.
  • のアクセス制限を大きくすることはできません.ex)親メソッドpublic->サブメソッドprivate(x)
  • は、新しい例外を捨てることはできません.
  • フレーズは省略できますが、フレーズがあれば、コンパイラが正しく上書きされているかどうかをチェックするので、エラーを減らすことができます.
  • 親メソッドの呼び出し(super)

  • の子クラスで親を上書きするメソッドの場合、親メソッドは非表示になり、上書きされた子メソッドのみが使用されます.このとき大げさでない親のやり方を使いたいならsuper親になる方法()でいいです.
  • finalクラスとfinalメソッド

  • finalクラスは最終クラスであり、親クラスではありません.
  • finalメソッドは最終メソッドなので、あまり使用できません.
  • 保護されたアクセス制限

  • 同じパケット内または他のパケットがサブクラスである場合、アクセスが許可されます.
  • セグメントnew演算子を使用してコンストラクション関数を直接呼び出すことはできませんが、サブコンストラクション関数super()を使用する必要があります.親ジェネレータを呼び出すことができます.
  • タイプ変換が多すぎます

  • 多形性とは同じタイプを指すが、実行結果は複数のオブジェクトの性質を利用することができる.
  • 親タイプは、すべての子オブジェクトに置き換えられます.
  • 自動タイプ変換

  • 自動タイプ変換とは、プログラムの実行中に自動的にタイプ変換が発生することを意味する.
  • Tire t1 = new HankookTire();
    Tire t2 - new kumhoTIre();
  • 親タイプに自動的に変換されると、親に宣言されたメンバーのみがアクセスできます.
  • メソッドがサブクラスで上書きされた場合、サブクラスメソッドが呼び出されます.
  • フィールドの多形性

  • フィールドのタイプを変更しない場合、実行結果は、このフィールドに格納されるオブジェクトによって異なります.例えば、テレビの対象があり、継承された三星テレビ、ELJITVがあるとすれば、シーンのタイプはテレビで、中身は簡単に三星やELJIに変換できます.どちらもテレビを継承しており、何に変えても問題はない.三星テレビはパワーオン()機能をさらに高めてオーバーライドする際、テレビの内容を三星テレビに変更すれば、より高い機能を使うことができる.
  • パラメータの多形性

  • パラメータのタイプがクラスの場合、そのクラスのオブジェクトとサブオブジェクトをパラメータとして使用できます.
  • 強制型変換(Casting)

  • 親タイプを子供タイプに変換することを指す.
  • 子タイプが自動的に親タイプに変換された後、子タイプに変換するときに強制タイプ変換を使用します.
  • 抽象クラス

  • は、オブジェクトを直接生成できるエンティティクラスの共通特性のみを抽出して宣言するクラスを抽象クラスと呼ぶ.
  • 抽象クラスとエンティティクラスは継承関係を有する.親は抽象クラス、子はエンティティクラスです.
  • 抽象クラスはオブジェクトを直接生成できません.
  • 抽象クラスの用途

  • エンティティクラスの共通フィールド、メソッド名統一
  • エンティティークラスの作成に要する時間を節約する
  • 抽象クラス宣言

  • クラス宣言にabstractを追加すると、new演算子を使用してオブジェクトを作成することはできません.継承によってのみサブクラスを作成できます.
  • public abstract class 클래스{
    	// 멤버
    }
  • サブオブジェクトを生成するとsuper()が呼び出されて抽象クラスオブジェクトが作成されます.したがって、抽象クラスにも作成者が必要です.
  • 抽象メソッドと上書き

  • 抽象メソッドは抽象クラスでのみ宣言できます.
    -メソッドの宣言子のみで、実行可能なカッコはありません.
  • 抽象クラスを設計する際に、実行内容をサブクラスに強制的に埋め込む方法がある場合は、宣言する.
  • サブメソッドが抽象メソッドを再定義していない場合、コンパイルエラーが発生します.