생성자 - 업캐스팅

2024. 3. 12. 08:48정보처리,전산/JAVA

반응형

 업캐스팅은 서브클래스의 객체를 슈퍼클래스의 객체로 변환하여 자식 클래스의 객체를 부모 클래스의 참조 변수에 할당하는 것이다.

 상속 관계에서 서브클래스의 생성자가 호출될 때, 먼저 슈퍼클래스의 생성자가 호출되고, 이후에 서브클래스의 고유한 초기화 코드가 실행된다.

public class Main {
    public static void main(String[] args) {
        A b = new B();
        b.paint();
        b.draw();
    }
}

class A {
    public void paint() {
        System.out.print("A");
        draw();
    }
    public void draw() {
        System.out.print("B");
        draw();
    }
}

class B extends A {
    public void paint() {
        super.draw();
        System.out.print("C");
        this.draw();
    }
    public void draw() {
        System.out.print("D");
    }
}

 

 main 에서 A클래스의 객체 b를 생성하고 B의 클래스의 인스턴스로 초기화하고 다형성을 사용하여 부모 클래스 타입의 변수가 자식 클래스의 객체를 참조한다.

 

# 이름이 같은 메서드에는 자식 메서드가 우선으로 작동한다.

 - paint() 메서드 내에서 super.draw()를 호출하여 부모 클래스인 A의 draw() 메서드가 호출됨 : B

 - "B"를 출력하고 자기 자신을 재귀적으로 호출. 이 때, B 클래스의 draw() 메서드가 호출된다. : D
 - SYSO로 넘어가서 "C"를 출력 : C

 - this.draw();를 통해 다시 현재 클래스인 B 클래스의 draw() 메서드 호출 ; D

- 마지막으로 부모읜 draw() 함수로 돌아가 자식의 draw()를 호출 ;D

 

 

반응형

'정보처리,전산 > JAVA' 카테고리의 다른 글

ArrayIndexOutOfBoundsException  (0) 2024.05.08
객체 생성  (0) 2024.04.21
public static void main(String[] args)  (0) 2024.04.12
static  (0) 2024.04.12
JDBC - 데이터베이스에서 UPDATE 쿼리를 실행  (0) 2024.04.08