데이터 과학

상속에서 생성자와 super 연산 본문

AP/AP Computer Science A

상속에서 생성자와 super 연산

티에스윤 2024. 6. 4. 12:05

아래 예제는 출력물이 조금 복잡합니다. 

 

객체 타입과 객체가 다른 상황에서 super를 사용한 생성자 상속과 관련된 내용입니다. 

 

Dancer a = new Acrobat();

 

본문에서 객체 대상( Acrobat() )이 객체 타입(Dancer)과 다르게 설정되어 있죠. 

이에 a가 가리키는 대상이 다릅니다. 

 

super.act();

 

이 명령어를 통해 Dancer 클래스에서 가지고 있는 act() 메소드를 전부 포함하게 됩니다. 

 

public void act() {
    System.out.print (" spin");
   doTrick();
}

 

이 메소드가 되겠네요. 주의해야 할 점은 doTrick()입니다. doTrick은 Dancer클래스에도 있고 상속받은 하위 클래스인 Acrobat에도 있습니다. 

 

어느 메소드를 호출해야 할까요? 하위 클래스에서 super를 호출해서 메소드를 포함하는 상태이니 Acrobat에 있는 doTrick() 메소드를 호출해야 합니다. 

그러면 somersault 가 출력되겠네요.  Dancer 클래스에 있는 doTrick()은 호출되지 않습니다. 

 

이 예제는 상속에서의 super 함수의 역할과 의미에 대한 예제입니다

super를 호출하면 메소드의 내용이 전부 포함됩니다. 

 

 

 

public class Dancer {

  public void act() {
    System.out.print (" spin");
   doTrick();
}

 

public void doTrick() {
System.out.print (" float");
}

public static void main(String args[]) {
      Dancer a = new Acrobat();
      a.act();
    }
}

class Acrobat extends Dancer {
    public void act() {
    super.act();
    System.out.print (" flip");
}


public void doTrick() {
   System.out.print (" somersault");
   }
}

 

결과 : 

 

 

Dancer.java
0.00MB

 

 

생성자에 대한 내용은 아래 예제를 참고해서 보세요. 

 

https://tsyoon.tistory.com/183

 

생성자 예제

생성자와 접근한정자 관련 예제입니다. 예제 1) public class Person { private String name; private int age; public Person(String aName, int anAge) { name = aName; age = anAge; } /** @return the String form of this person */ public String toS

tsyoon.tistory.com

 

'AP > AP Computer Science A' 카테고리의 다른 글

ArrayList 예제 -2  (0) 2024.06.04
추상화와 super 예제  (0) 2024.06.04
상속 예제  (0) 2024.05.31
this와 toString() 메소드  (0) 2024.05.29
static 변수  (0) 2024.05.29