Spring/JAVA

Java 상속

alsruds 2023. 10. 2. 23:21
🐣생활코딩 강의🐣

Java 상속
https://www.youtube.com/playlist?list=PLuHgQVnccGMA1bRSk_SZrXMngx5iq03cc

 

  • 계산기 예제

 

→ 부모 클래스 : Cal

자식 클래스 : Cal2

 

Extends, Overriding, Overloading, Super 사용하기

class Cal {
    public int sum(int v1, int v2) {
        return v1 + v2;
    }

    // overloading (상속과 관련된 것은 아님)
    public int sum(int v1, int v2, int v3) {
    
        // return v1 + v2 + v3; 과 같은 효과
        // this 는 자기 자신을 가리킴
        return this.sum(v1, v2) + v3;
    }
}
class Cal2 extends Cal {
    // overriding : 부모가 가진 기능을 재정의 (덮어쓰기)
    public int sum(int v1, int v2) {
        System.out.println("Cal2!!");
        
        // return v1 + v2; 과 같은 효과
        // 부모 클래스의 sum 을 가리키게 됨
        return super.sum(v1,v2);
    }
    public int minus(int v1, int v2) {
        return v1 - v2;
    }
}
public class Main {
    public static void main(String[] args) {
        Cal c = new Cal();
        System.out.println(c.sum(2,1));
        System.out.println(c.sum(1,2,3));

        Cal2 c2 = new Cal2();
        System.out.println(c2.sum(2,1));
        System.out.println(c2.minus(2,1));
    }
}

출력 결과

 

· Extends

class Cal2 extends Cal { ... }

➡️ Cal2 클래스가 Cal 클래스를 확장시킨다 (상속받는다)

 

· Overriding

class Cal {
    public int sum(..) {..}
}
class Cal2 extends Cal {
    public int sum(..) {..}
}

➡️ 부모 클래스인 Cal 이 가진 sum 메소드를 자식 클래스인 Cal2 에서 다시 정의한다

 

· Overloading

class Cal {
    public int sum(int v1, int v2) { return v1 + v2; }
    public int sum(int v1, int v2, int v3) { return v1 + v2 + v3; }
}

➡️ 한 클래스 내에서 이름이 같은 sum 메소드를 다른 매개변수 타입 혹은 개수로 정의한다

 

· Super

class Cal2 extends Cal {
    public int sum(..) { return super.sum(v1,v2); }
}

➡️ 자식 클래스인 Cal2 에서 부모 클래스인 Cal 의 sum 메소드를 호출하게 된다

 

생성자, this 사용하기

class Cal {
    int v1, v2;
    Cal(int v1, int v2) { // 생성자
        System.out.println("Cal init!!");
        this.v1 = v1;
        this.v2 = v2;
    }
    // this : 자기 자신 가리키기
    public int sum() {return this.v1+v2;}
}
class Cal2 extends Cal {
    Cal2(int v1, int v2) {
        super(v1, v2); // 부모 클래스의 생성자 호출
        System.out.println("Cal2 init!!");
    }
    public int minus() {return this.v1-v2;}
}
public class Main {
    public static void main(String[] args){
        Cal c = new Cal(2,1);
        Cal2 c2 = new Cal2(2,1);

        System.out.println(c2.sum()); // 2
        System.out.println(c2.minus()); // 1
    }
}

출력 결과