- 오버라이딩. 다형성2024년 07월 23일
- chantleman
- 작성자
- 2024.07.23.:58
<Animal.java> - 최상위 클래스
public class Animal { public void cry() { } public void sing() { } }
<Cat.java> - Animal 클래스를 상속받음
public class Cat extends Animal{ @Override public void cry() { System.out.println("야옹~"); } }
<Dog.java> - Animal 클래스를 상속받음public class Dog extends Animal{ @Override public void cry() { System.out.println("멍멍!"); } }
<main.java>
import kr.or.ddit.util.ScanUtil; public class AniMain { public static void main(String[] args) { System.out.println("1.고양이"); System.out.println("2. 강아지"); int sel = ScanUtil.nextInt("선택: "); if(sel == 1) { Cat cat = new Cat(); cat.cry(); } if(sel ==2) { Dog dog = new Dog(); dog.cry(); } } }
이런 식으로 해도 되지만,
만약 알고리즘이 복잡해지게 되면 중복되는 코드가 너무 많아지기때문에
다형성을 이용하여 사용하는 것이 가장 좋습니다.
- 다형성 이용해서 하는 방법
import kr.or.ddit.util.ScanUtil; public class AniMain { public static void main(String[] args) { System.out.println("1.고양이"); System.out.println("2. 강아지"); int sel = ScanUtil.nextInt("선택: "); Animal ani= null; if(sel == 1) { ani = new Cat(); } if(sel ==2) { ani = new Dog(); } ani.cry(); } }
만약 1을 선택하면 ani에 cat이 들어가고, 2를 선택하면 ani에 dog가 들어갑니다.
이런 것을 다형성이라고 하는데,
다형성은 기본적으로 오버라이딩을 해줘야합니다.
위 예제코드처럼 부모 클래스에 자식 클래스를 담을 때는 타입이 자동으로 변환되지만,
부모 클래스에 자식클래스를 담을 때는 아래와같이 강제로 형변환해줘야합니다.
Cat cat = (Cat)ani;
728x90'자바' 카테고리의 다른 글
인터페이스 (2) 2024.07.24 추상 클래스 (0) 2024.07.23 ValueObject (0) 2024.07.22 lombok.jar (0) 2024.07.22 싱글톤 (1) 2024.07.19 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)