Inheritance


継承


継承(Inheritance)とは、あるオブジェクトが存在する場合、そのオブジェクトのフィールド(変数)とメソッドを他のオブジェクトに継承できる機能を継承と呼ぶことを意味します.
継承されたクラスをサブクラス、サブクラス、またはサブクラスと呼びます.
継承クラスは、親、親、またはスーパークラスと呼ばれます.
//상속은 extends라는 키워드를 사용하며 상속의 형태는 다음과 같다.

자식클래스 extends 부모클래스

//Car 를 상속받은 Bus 를 class로 표현하는 방법
public class Parent{

    }

    public class Child extends Parent{

    }
Javaでは、子クラスが複数の親クラスから複数の継承を取得することはできません.
1つの親からの単一の継承のみを許可します. ただし、親は複数の子を継承できます.

継承の使用


Javaから代々受け継ぐことができます.
Class Parent{                    // 부모클래스
}

Class Child extends Parent{      // 부모클래스로부터 상속받은 자식클래스
			...
}

Class GrandChild extends Child{  // 자식클래스로부터 상속받은 손자클래스
			...                        // 부모,자식 클래스 모두 상속받음
}

Super


親から継承されたフィールドまたはメソッドをサブクラスで参照する参照変数.
super 参照変数を親として使用 クラスのメンバーにアクセスします.
これと同様に、スーパーリファレンス変数を使用できるターゲットもインスタンスメソッドのみであり、クラスメソッドでは使用できません.
//예제
class Parent { int a = 10; }

class Child extends Parent {

		int a = 20;

    void display() {

        System.out.println(a);
        System.out.println(this.a);
        System.out.println(super.a);

    }
}

public class Inheritance02 {
    public static void main(String[] args) {

        Child ch = new Child();

        ch.display();
    }
}
// 실행결과는 20           20           10 이 나온다.

Super()


この()メソッドが同じクラスの他のジェネレータを呼び出す場合.
親のジェネレータを勝手に呼び出さないと、親のデフォルトのジェネレータが自動的に呼び出されます.
super()メソッド親クラスの作成者を呼び出す
class Parent{
    Parent(){
        System.out.println("Parent 생성자");
    }
    Parent(int a){
        System.out.println(a);
    }
}

class Child extends Parent{
    Child(){
        super();
        System.out.println("Child 생성자");
    }
    Child(int a){
        super(a);
        System.out.println("a = " + a);
    }
}

public class Ex01 {
    public static void main(String[] args) {
        // Child 클래스의 Child(int a) 를 호출하면
        // 부모 클래스 Parent클래스의 Parent(int a) 를 호출합니다.
 
        /* 결과:
         * 20
         * a = 20
         *  
         */
        new Child(20);
    }
}

オーバーライド(Override)


子供は親が持っている方法とそっくりの方法を持っている.オーバーライド再定義メソッド
上書き条件

  • 名前は同じにします.

  • パラメータは同じでなければなりません.

  • リターンタイプは同じでなければなりません.

  • 子供の制限者は親の制限者より小さくてはならない.
    (private < package < protected < public)
  • //run 메소드를 가지고 있는  Parent클래스 
        public class Parent{
            public void run(){
                System.out.println("Parent의 run메소드");
            }
        }
    
        //Parent 를 상속받는 Child 클래스 
        public class Child extends Parent{
    
        }
    
        public class Test{
            public static void main(String args[]){
                Child child = new Child();
                child.run();  // Parent의 run메소드가 실행된다. 
            }
        }
    
    //-------------------------------------------------------------------------------------
    
    // Child 클래스에 부모가 가지고 있는 메소드와 모양이 같은 메소드를 선언
    
    public class Child extends Parent{
            public void run(){
                System.out.println("Child의 run메소드");
            }
        }
    
        public class Test{
            public static void main(String args[]){
                Child child = new Child();
                child.run();  // Child의 run메소드가 실행된다. 
            }
        }   // 메소드를 오버라이드 하면, 항상 자식클래스에서 정의된 메소드가 호출
    
    //-------------------------------------------------------------------------------------
    
    // 오버라이딩 한다고 해서 부모의 메소드가 사라지는 것은 아니다.
    // super 키워드를 이용하면, 부모의 메소드를 호출 할 수 있다.
    
    public class Child extends Parent{
            public void run(){
                **super.run();**  // 부모의  run()메소드를 호출 
                System.out.println("Child의 run메소드");
            }
        }