[JAVA]다형성

진섭·2023년 5월 11일
0
post-thumbnail

다형성

자바의 정석 책과 안드로이드 앱스쿨에서 공부한 내용을 정리한 내용입니다.

 

다형성이란?

image
다형성은 상속과 깊은 관계를 가지고 있고 비슷한 개념을 지니고 있어요.
다형성은 한자 뜻 그대로 많을 다,형상형, 성품 성 여러가지 형태를 가질 수 있는 능력이다.

위의 그림 처럼 이브이는 진화를 여러가지를 할 수가 있습니다. 이브이를 상속받아 불 속성을 추가하면 불 속성을 지닌 부스터가 되고 번개 속성을 추가하면 쥬피썬더가 된다.

코드로 작성을 하면 아래와 같다.

public class MainClass {

	public static void main(String[] args) {
		Eevee booster = new Booster();
		Eevee jolteon = new Jolteon();
		
		booster.attack();
		jolteon.attack();

	}

}

class Eevee {

	void attack() {// 박치기
		System.out.println("박치기~");
	}
}

class Booster extends Eevee {
	@Override
	void attack() {// 화염방사
		System.out.println("화염방사~");
	}
}

class Jolteon extends Eevee {
	@Override
	void attack() {// 번개공격
		System.out.println("번개공격~");
	}
}

이브이라는 클래스를 만들어 메서드는 attack() 하나를 만들었습니다.
인제 저는 불 속성 부스터, 번개 속성 쥬피썬더를 만들어 볼 겁니다.
먼저 부스터에는 이브이 클래스의 attack()을 오버라이딩을 받아와 부스터는 화염방사, 쥬피썬더는 번개 공격을 출력하도록 구성을 하였습니다.
출력을 해보면 정상적으로 화염방사와 번개공격이 출력이 됬습니다!

화염방사~
번개공격~

다형성과 상속은 뭐가 다른건가요?

상속은 이미 존재하는 클래스를 재활용해 새로운 클래스를 작성하는 것이라면, 다형성은 하나의 객체나 메소드가 여러가지 다른형태를 가질 수 있는 것을 말한다.

0개의 댓글