본문 바로가기
Java

백엔드_자바__다형성(업 캐스팅) 간단한 실습

by N잡러 지망생 2023. 7. 17.
728x90

 

객체지향에 들어오면서 멘탈이 바사삭.... 됐는데

구글이랑 유튜브 검색을 하면서 

추가적으로 더 공부를 하니

다행히 어느 정도 감이 왔다.

 

그래도 이번에 쓰는 이 다형성에 대해서는 

명확히 알지는 못한다.

 

하지만

클래스를 만들고 필드와 메서드를 구성하고 

인스턴스화시키고, 실행을 하는 거까지 아주 간단한 정도는 혼자서도 가능하게 됐다.

 

아주 간단한 상황을 가지고 구현을 해보자

 

상황 및 진행

1. 사람, 새, 물고기는 모두 동물이다.    (Animal이라는 부모 클래스를 만든다.)

public class Animal {}

 

2. 부모 클래스인 Animal에 공통적인 필드와 메서드를 넣어준다.    ( 간단하게 만들 것이기 때문에 필드 : gender,  메서드: eat, sleep로 했다.)

public void eat(String food){
System.out.printf("동물이 %s 을 먹습니다.%n",food);
}
public void sleep(){
System.out.println("동물이 잠을 자고 있습니다.");
}

 

3. 각 자식 클래스를 작성한다. 이때 부모 클래스인 Animal의 필드와 메서드를 상속받고, 자기만의 필드 또는 메서드를 만든다.

public class Person extends Animal

예로 사람 클래스만 작성하겠다.

extends로 부모 클래스를 상속받는다. 

공통 사항은 @Override를 통해 갖고 와서 수정한다.

@Override
public void eat(String food) {
System.out.printf("사람은 도구로 %s를 먹습니다.%n",food);
}

↑ 부모의 eat을 가져와서 수정

 

@Override
public void sleep() {
System.out.printf("사람이 잠을 자고 있습니다.%n");
}

↑ 부모의 sleep을 가져와서 수정

 

private String name;
private String job;
private long height;
public void walk(){
System.out.printf("사람이 걷고있습니다.%n");
}

↑ 부모 클래스에는 없는, 사람의 고유한 필드와 메서드를 생성.

 

4. 실행을 위한 클래스를 생성한다.

실행 클래스

 

이 클래스에서 보면 타입은 부모 클래스인 Animal타입으로 통일했고, 자식들로 인스턴스를 만든 게 있는데

아마 이 부분이 업 캐스팅인 거 같다.

 

반응형