過負荷と過負荷


過負荷と過負荷
overloadingとoverridingは名前が似ているので混同されていますが、違いは肯定的です!
  • overloading(リロード):新しいメソッドの定義(new)-X
  • を継承して関連付ける
  • overriding(上書き):祖先クラスから継承されたメソッドの内容を変更(change,modify)-O
  • を継承して関連付けます.
    過負荷とは?
  • クラスで複数の同名メソッドを定義
  • かふかじょうけん
  • メソッド名は同じでなければなりません.
  • パラメータの数またはタイプは異なる必要があります.
  • 戻りタイプは関係ありません.
  • 正しい例)順序が異なっていてもオーバーロードを認める
    long add(int a, long b) { return a+b; }
    long add(long a, int b) { return a+b; }
    エラー例)戻りタイプが異なる場合のみ過負荷ではありません.
    int add(int a, int b) { return a+b; }
    long add(int a, int b) { return (long)(a+b); }
    エラー例)パラメータの数や種類が同じ場合は、オーバーロードされません.
    int add(int a, int b) { return a+b; }
    int add(int x, int y) { return x+y; }
    誇張とは何ですか.
    親から継承するメソッドの内容を変更します.
    上書き条件
    メソッドの宣言子(メソッド名、パラメータ、戻りタイプ)は、新しいメソッドのコンテンツのみであるため、祖先のコンテンツと完全に一致する必要があります.ただし、アクセス制御者や例外は限られた条件で変更できます!

  • アクセス制御者は、祖先クラスメソッドよりも狭い範囲に変更できません.
    祖先クラスで定義されたメソッドのアクセス制御者が保護されている場合、メソッドのサブクラスを上書きするメソッドは、アクセス制御者によって保護または公開される必要があります.ほとんどのアクセス制御者は、同じ範囲を使用しています.
    アクセス制御範囲:public>protected>(default)>private

  • 祖先クラスメソッドよりも数が多い例外は宣言できません.
  • class Parent {
        void parentMethod() throws IOException, SQLException { // 예외 2개 선언
        
        }
    }
    
    class Child extends Parent {
        void parentMethod() throws IOException { // 예외 1개 선언
        
        }
    }
    オーバレイの定理
  • 宣言子は、祖先クラスのメソッドと一致する必要があります.
  • アクセス制御者を祖先クラスメソッドよりも小さい範囲に変更することはできません.
  • 例外は、親メソッドよりも多く宣言できません.