진호진호
Archive
진호진호
  • Me
    • 공부
      • Java
      • 자료구조
    • 일상
      • 책
      • 해외여행
      • 국내여행
      • 돌아보기
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • 상속
  • 파이널에디션
  • 타입 변환
  • 이재용 어묵
  • 국내여행
  • 오늘부터 개발자
  • 여와 해변
  • 여수 밤바다
  • 비전공자를 위한 이해할 수 있는 IT 지식
  • 깡돼후
  • 시작해요 언리얼
  • 23년
  • 자바
  • 하스스톤
  • 순천만 국가정원
  • Java
  • 아무말
  • 여행
  • 언리얼 엔진 5
  • 만습지

최근 댓글

최근 글

hELLO · Designed By 정상우.
진호진호

Archive

공부/Java

다형성 Polymorphism

2024. 2. 22. 17:46

 

Bird Worm Cat
cry() chirp() croak()

 

↓ 타입이 다른 객체들이 동일한 개념의 행위를 수행할 때, 같은 이름을 부여하고 다르게 행동하게 하는 것이 좋다.

Bird Worm Cat
cry() cry() cry()

 

다형성

타입이 다른 객체가 같은 이름, 다른 행동의 메소드를 사용할 수 있게 하는 동적 바인딩 과정

 

1. 슈퍼클래스에서 상위 개념 정의

public class Animal {
    void cry() {}
}
//abstract class, interface 모두 가능

2. 각 서브클래스에서 재정의/구현

public class Cat extends Animal{
    @Override
    void cry() {
        System.out.println("야옹");
    }
}
public class Sparrow extends Animal{
    @Override
    void cry() {
        System.out.println("짹짹");
    }
}

3. 슈퍼클래스 타입의 참조변수 선언

public class Polymorphism {
    public static void main(String[] args) {
        Animal cat = new Cat();
        Animal sparrow = new Sparrow();

        cat.cry(); //야옹
        sparrow.cry(); //짹짹
    }
}

 

다형성의 장점

클래스 타입에 관계없이 하나의 추상적인 함수 이름을 사용.

새로운 타입의 서브클래스를 추가해도 프로그램 변경이 거의 없다.

public class Polymorphism2 {
	public static void main(String[] args) {

		Animal[] animals = { 
	    	new Cat(),
			new Sparrow(),
	    	new Dodo(), 	// 프로그램에 새로운 서브클래스를
			new Caw()		// 추가하여도
	 	};

	 	for (Animal x : animals) {		// 변경되지
		  	x.cry();					// 않음.
      	}
   	}
}

'공부 > Java' 카테고리의 다른 글

자바 예외 처리, Checked Exception와 Unchecked Exception  (0) 2024.02.27
자바 추상 클래스와 인터페이스  (0) 2024.02.14
자바 상속 - 클래스 타입 변환  (0) 2024.02.14
자바 상속 - super, this 예제  (0) 2024.02.08
    '공부/Java' 카테고리의 다른 글
    • 자바 예외 처리, Checked Exception와 Unchecked Exception
    • 자바 추상 클래스와 인터페이스
    • 자바 상속 - 클래스 타입 변환
    • 자바 상속 - super, this 예제
    진호진호
    진호진호
    기록보관소

    티스토리툴바