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("동물이 잠을 자고 있습니다.");
}
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);
}
public void eat(String food) {
System.out.printf("사람은 도구로 %s를 먹습니다.%n",food);
}
↑ 부모의 eat을 가져와서 수정
@Override
public void sleep() {
System.out.printf("사람이 잠을 자고 있습니다.%n");
}
public void sleep() {
System.out.printf("사람이 잠을 자고 있습니다.%n");
}
↑ 부모의 sleep을 가져와서 수정
private String name;
private String job;
private long height;
private String job;
private long height;
public void walk(){
System.out.printf("사람이 걷고있습니다.%n");
}
System.out.printf("사람이 걷고있습니다.%n");
}
↑ 부모 클래스에는 없는, 사람의 고유한 필드와 메서드를 생성.
4. 실행을 위한 클래스를 생성한다.
이 클래스에서 보면 타입은 부모 클래스인 Animal타입으로 통일했고, 자식들로 인스턴스를 만든 게 있는데
아마 이 부분이 업 캐스팅인 거 같다.
반응형
'Java' 카테고리의 다른 글
백엔드_객체지향__추상화 / 추상 클래스 (9) | 2023.07.18 |
---|---|
백엔드_객체지향__고객 관리 시스템 실습 (2) | 2023.07.18 |
백엔드_자바__객체의 상속 (15) | 2023.07.17 |
자바_객체지향__커피 주문 상황 (8) | 2023.07.16 |
백엔드_자바__ro쩌는 인스턴스 비유 / 오버로드 (37) | 2023.07.14 |