다형성

Life is ninanino·2022년 9월 19일
0

JAVA

목록 보기
11/15

다형성

다형성은 객체가 다양한 형태로 표현될 수 있다는 개념. 추상화된 객체와 같은 "틀"을 가진 객체가 구체화된 객체로 표현 가능하다고 해석할 수 있다
부모 클래스를 활용하여 자식의 객체를 제어할 수 있다는 뜻

부모가 S/W회사이고 자식이 회사A,B,C이다.
각 회사는 S/W 회사라는 공통적인 개념에서 시작되었지만, 내부적으로는 각 회사의 특성에 맞게 조금씩 변화되어 만들어 질 수 있다.
다형성의 경우에는 "회사 A,B,C의 공통적인 개념은 S/W회사이다" 를 활용하는 것이다

상속과 다형성

다형성(Polymorphism)은 객체를 여러가지 형태로 변환하여 사용할 수 있는 기법으로, 상속 관계에 있는 클래스 간에 사용할 수 있다. 클래스에서 다형성을 사용할 때 부모 클래스의 객체를 사용하되 실제 메모리에 담기는 내용은 자식 클래스의 내용을 담는다

public class Main {
	public static void main(String[] args) {
		
		Animal animal_lion = new Lion("사자");
		animal_lion.Growl();
		
		Animal animal_cat = new Cat("고양이");
		animal_cat.Growl();
		//animal_cat.Udada(); 불가능합니다.
	}
}

abstract class Animal {
	
	String Name;
	
	public Animal(String name) {
		Name = name;
	}
	
	abstract public void Growl(); 
}

class Lion extends Animal {

	public Lion(String name) {
		super(name);
	}

	public void Growl() {		
		System.out.println("어흥");
	}
}

class Cat extends Animal {
	public Cat(String name) {
		super(name);
	}
	
	public void Growl() {		
		System.out.println("야옹");
	}
	
	public void Udada() {
		System.out.println("UDADADA");
	}
}

Animal animal_lion = new Lion("사자");
Animal animal_cat = new Cat("고양이");

여기서 다형성을 사용하고 있다. animal_lion과 animal_cat의 자료형은 Animal 클래스지만
객체를 초기화 할 때는 각각 Lion, Cat를 사용했다.
객체의 껍데기는 Animal 클래스를 사용했지만 실제로 객체에 저장되는 데이터는 Animal로부터 상속받은 Lion과 Cat클래스 데이터가.
주석은 데이터는 각각의 자식 클래스에 저장되지만 틀은 Animal 클래스 이기 때문에 사용할 수 없다.
Cat클래스에서 별로도 정의한 Udada메소드는 Animal 클래스에서 존재하지 않는 메소드다
따라서 Animal 클래스의 틀을 가지고 있는 animal_cat객체에서는 Udada메소드를 사용할 수 없다

다형성은 여러가지 케이스를 대응해야 할 때 자주 사용되는 기법이다. 상황에 맞게 객체를 바꿔서 만들어 사용할 수 있으며, 소스코드의 간결성과 재사용성을 높여주는 기법이다

profile
백엔드 프로그래밍을 공부하고 있습니다. AWS, 클라우드 환경에 대해 관심이 많습니다.

0개의 댓글