클래스 상속- 다형성

2022. 8. 30. 19:06Java 프로그램

728x90

다형성이란 같은 타입이지만 실행 결과가 다양한 객체의 대입이 가능한 성질을 뜻합니다. 예를 들면 같은 자동차 안에서의 타이어들은 타이어 종류에 따라 다른 성능을 낼 수 있다. 

 

[자동 타입 변환] (Promotion)

프로그램 실행 도중에 자동 타입 변환이 일어나는 것을 뜻합니다. 

부모 클래스   변수  =   자식클래스타입; ===> Promotion

ex)

Cat cat = new Cat();
Animal animal = cat; ====> Promotion

[강제 타입 변환] (Casting)

자식 타입을 부모 타입으로 자동 변환 후 , 다시 자식 타입으로 변환할 때

자식 타입에 선언된 필드와 메소드를 다시 사용해야할 경우 사용합니다.

자식클래스   변수  =  (자식클래스) 부모클래스타입;

강제 타입 변환은 확인이 필요합니다. 여기서 쓰이는 문법인  (부모 instanceof 자식)

public void method(Parent parent){
	if(parent instanceof Child){
    Child child = (Child) parent;
     }
    }

 

 

[추상클래스]

추상클래스는 실체들 간에 공통되는 특성을 추출한 것이라고 할 수 있습니다. 

예)

 1. 새,곤충,물고기  ==> 동물(추상)

 2. 버스,트럭, 중형차, 자전거, 오토바이 ===> 탈것(추상)

 

추상클래스는 실체 클래스들의 공통되는 필드와 메소드를 정의한 클래스입니다. 추상클래스를 사용하면 그저 필요하다면 추가적인 필드와 메소드만 추가하면 되기 때문에 시간절약성이 탁월합니다.

<선언>

public abstract class 클래스명{
	//필드
    //생성자
    //메소드
   }

동물의 추상 메소드의 예시 및 오버라이드 사용의 코드를 작성해 보겠습니다.

public abstract class Animal{
	public abstract void sound();			//동물의 추상클래스와 소리의 추상 메소드
    
    }

위는 추상클래스중 동물을 추상, 소리를 추상 메소로 만들었습니다.

public class Dog extends Animal {	//부모클래스를 추상클래스인 Animal
	@Override
    public void sound(){				//동물중 강아지의 실체를 가진 자식클래스 Dog
    	System.out.println("왈왈");
        }
     }

강아지 실체 구현

 

public class Cat extends Animal { 		// 부모클래스가 추상클래스인 Animal

	@Override
    public void sound(){					// 고양이의 실체 구현
    	System.out.println("야옹");
        }
     }

고양이를 구현한 클래스

 

 

오버라이드함으로써 각각 생성자를 만들고 실행한다면 Dog의 sound메소드는 왈왈, Cat의 sound 메소드는 야옹 출력 결과가 나올것입니다.

 

감사합니다.

반응형

'Java 프로그램' 카테고리의 다른 글

예외처리(Exception)  (2) 2022.09.20
인터페이스(interface)  (0) 2022.08.30
상속 (클래스 상속)/ @Override  (0) 2022.08.30
Class(클래스)  (0) 2022.08.30
메소드  (0) 2022.08.24