반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

[취업/면접] 다형성이란? (+ 동적 바인딩이란?) 본문

。*:・゚☆・゚schedule・゚*:・゚★・:*:・☆ *:・゚★/나의 면접 준비 자료 ✿˘◡˘✿

[취업/면접] 다형성이란? (+ 동적 바인딩이란?)

yeonee 여니 2023. 10. 11. 19:30
728x90
반응형
SMALL

안녕하세요.
#yeoneeblog 여니입니다 :)

 

 

1. 다형성이란? (Polymorphism)

다형성은 기본적으로 다양한 형태의 성질을 가진다는 의미입니다. 기본적으로 자바는 다형성을 그 특징으로 가지는 객체 지향 프로그래밍 언어입니다. 자바에서는 이 다형성을 이용하여 객체를 사용할 때 사용하는 변수 형태를 바꾸어 여러 타입의 객체를 참조할 수 있습니다. 결과적으로 이러한 다형성의 개념을 적절하게 이용할 때 프로그래밍의 소스 코드를 유연하게 구성할 수 있습니다. 다형성은 부모 클래스 타입의 참조변수로 하위 클래스의 객체를 참조할 수 있게 해줍니다.

 

 

2. 자바에서 다형성 활용해보기

<Fruit 클래스>

package Polymorphism;

public class Fruit {

	String name;
	int price;
	int fresh;
	
	public void show() {
		System.out.println("이름 : " + name);
		System.out.println("가격 : " + price);
		System.out.println("신선도 : " + fresh);
	}
}

<Peach 클래스>

package Polymorphism;

public class Peach extends Fruit{

	// 변수 초기화
	public Peach() {
		name = "복숭아";
		price = 1500;
		fresh = 75;
	}
}

<Main 클래스>

package Polymorphism;

public class Main {

	public static void main(String[] args) {

		// 부모 클래스에 변수로서 자신의 자식 클래스의 인스턴스를 넣어줄 수 있다.
		// Peach라는 인스턴스를 자신의 fruit 변수에 넣어줄 수 있다. 
		// 그리고 참조변수를 이용하여 show 함수 호출할 수 있다.
		Fruit fruit = new Peach();
		fruit.show();
		
	}
}

<콘솔 실행창>

자식클래스 내부에 변수를 초기화하여 입력한 정보를 출력해줄 수 있습니다.

 

3. 자식클래스에서 변수 초기화 하지 않으면?

만약 자식클래스 내부에 변수를 초기화해주기 않으면 어떻게 될까요?

<Peach 클래스>

package Polymorphism;

public class Peach extends Fruit{

	// 변수 초기화
	public Peach() {
//		name = "복숭아";
//		price = 1500;
//		fresh = 75;
	}
}

<콘솔 실행창>

내용이 모두 없는 상태로 출력되므로 꼭 변수를 초기화해준 뒤에 사용해야만 올바르게 출력할 수 있습니다.

 

4. 다른 자식(과일) 클래스를 출력하고 싶다면?

<Melon 클래스>

package Polymorphism;

public class Melon extends Fruit{

	// 변수 초기화
	public Melon () {
		name = "메론";
		price = 3000;
		fresh = 80;
	}
}

<Main 클래스>

package Polymorphism;

public class Main {

	public static void main(String[] args) {

		Fruit fruit = new Melon();
		fruit.show();
		
	}
}

내가 출력할 다른 새로운 클래스인 'Melon'을 입력해줍니다.

<콘솔 출력창>

그러면 내가 입력한 Melon의 정보가 출력되는 것을 볼 수 있습니다.

 

사용자가 임의적으로 사용할 것을 정해줄 수 있는, 바로 이것이 다형성입니다.
자식클래스 인스턴스 변수를 자신의 변수로 넣을 수 있는 것이 다형성의 기본 개념입니다.

이제 다형성을 실제로 사용해볼까요?

 

5. 다형성 실제 활용해보기

입력받는 값인 숫자 1, 2 에 따라 출력되는 결과가 각각 다르게 나타나집니다.

실제 사용자가 입력한 값에 따라 게임 등에서도 많이 활용 중이라고 합니다.

즉, 자식 클래스를 자신의 변수로서 불러와서 자신의 변수를 바꾸어 출력하는 구현방식다형성입니다.

다형성이란 동일한 부모 클래스 타입을 상속받은 후손 클래스 타입들을 부모 타입으로 처리하는 기술을 의미합니다.

 

6. 동적 바인딩이란?

이 다형성을 지원하기 위해서는 동적 바인딩이 필수적입니다. 

동적 바인딩이란?

부모타입으로 참조되는 후손객체의 오버라이딩된 메소드에 적용되며, 
컴파일 시에는 부모의 메소드를 정적 바인딩해 두었다가 프로그램이 실행될 때 참조하는 후손의 오버라이딩된 메소드로 연결을 바꾸어 실행하는 것을 말합니다.

728x90
반응형
LIST