Javaの継承(継承)&上書き(上書き)のクリーンアップ


Javaから継承(継承)


1.Javaはなぜ継承を使用しますか?


継承を使用する最大の理由は、共通の要素が多数ある場合、冗長性(冗長性)を回避できることです.

2.継承された構造


Super ClassとSub Classが存在します.

SubclassはSuper classを継承します.
上の図ではClassAをSuper Class、ClassBとClassCをSub Classと呼びます.

3.継承の表現方法


extendsを使用します.
public class Employee extends Person {

	//code
    
}

4.継承を使用する際の注意事項


Subクラスで定義されていないが、Superクラスでpublicと定義されている場合は、Subクラスで定義することなくSubクラスを使用できます.ただし、privateとして定義されているクラスは外部にアクセスできません.superclassで定義されているアクセサ(get method)とmutators(setmethod)を使用してアクセスする必要があります.
通常、継承はis-a関係として表されるが、すべてのis-aが継承として表されるわけではない.
Javaでは多重継承は許可されていません.無条件の単一継承.
スーパークラスからprivateとして定義されたメソッドは継承されません.

5. Super Keyword


スーパークラスのコンストラクション関数(コンストラクション関数)はサブクラスに継承されません.
ただし、サブクラスのジェネレータでsuper(=superclass)キーを使用して実行できます.
サブクラスでsuperキーワードが明確に使用されていない場合、noパラメータコンストラクション関数(パラメータのないコンストラクション関数)はサブクラスのコンストラクション関数から自動的に呼び出されます.
super() = super class's constructor
super.メソッド()=superclassで定義されたメソッド呼び出し
superキーワードではなくsuper classの名前を使用してコンストラクション関数を作成すると、エラーが発生するため、superキーワードを使用する必要があります.
スーパークラスにno-paramentコンストラクション関数がない場合
(=自分でSuperClassでパラメータ付きジェネレータを作成し、
JAvaはno-paramentコンストラクション関数を自動的に作成していません.
|||||(または)独自のnoパラメータ構築関数を作成していない場合は、
エラーが発生しました.
したがって、スーパークラスになる可能性のあるクラスを作成する場合は、noパラメータ構築関数を作成することが望ましい.
また,サブクラスでスーパークラスのnoパラメータ構築関数を明確に呼び出すことが望ましい.

6. java.lang.Object


私たちが作成したjavaのすべてのクラス(継承されていない)は、実際には自動javaです.lang.Objectのサブクラス.したがって,Object classにおけるpublicメソッドを用いることができる.たとえば、toString()です.

メソッドオーバーライド(Method Overriding)


1.overloadingとの違い


オーバーロードとオーバーロードは異なる意味です.
リロードとは、スーパークラスにすでに存在するメソッドをサブクラスから同じメソッドを再生成することです.
すなわち、クラスは、同じメソッド名を有する複数のメソッドを有する.
パラメータタイプなどによって、異なるメソッドを呼び出すことができます.
public static int max(int num1, int num2){

	// code
    
}

public static double max(double num1, double num2){

	// code
    
}
上記形状は方法過負荷である.

2.Overridingとは


サブクラスは、スーパークラスでpublicとして定義されたメソッドを継承します.
この場合,サブクラスでスーパークラスメソッドの実装(実装)を修正する必要がある場合がある.この場合は書き換え方をします.
サブクラスでメソッドオーバーライドを行う場合は、スーパークラスのメソッドと同じ署名と戻りタイプを持つ必要があります.
(この場合signatureはメソッドの名前とパラメータリストを意味し、例えばpublic static double min(double num 1,double num 2)という関数ヘッダを持つ場合、min(double num 1,double num 2)はmethod signatureである.)
したがって,関数内部実装と修飾子(public/privateなど)の程度が異なる可能性がある.
Instance method(インスタンスメソッド)は、アクセス可能な場合(スーパークラスではpublic method)にのみ上書きを許可します.
上書きすると、クラスで上書きするメソッドが常に呼び出されます.(過負荷との違い)
メソッドオーバーライドは継承時にのみ使用可能です

3.静的方法


静的メソッドは継承できますが、上書きできません.
サブクラスで再定義された場合、スーパークラスで定義された静的メソッドは存在しません.
サブクラスの静的メソッドしか使用できません.

4. Override annotation (@Override)


JAvaでは、オーバーロードとオーバーロードのエラーを減らすためにoverrideコメントを提供します.
スーパークラスにすでに存在するメソッドをサブクラスで上書きする場合は、そのメソッドの上に「@Override」を使用します.
public class SubClass extends SuperClass {
	
    @Override
    public int max(int num1, int num2){
    	return "The max number is " + super.max(num1, num2);
    }
    
}
これは,@Overrideの次の方法がスーパークラスに存在する方法であり,この方法はサブクラスで上書きされることを意味する.
これは上書きを目的としていますが、誤って過負荷するとコンパイルエラーが発生します.