본문 바로가기

JAVA/개념정리

자바/Java 자바의 다형성이란?

자바/Java 자바의 다형성이란?




객체지향 개념에서의 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현 하였습니다.


이를 좀 더 구체적으로 말하자면, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것 입니다.


1) CarTest.java
package arabiannight.tistory.com.java.test;

public class CarTest {

	public static void main(String[] args) {

		Car c = new FireEngine();
		Car c2 = new Ambulance();

		c.drive();
		c2.drive();
		
	}
}

class Car {
	String color;
	int door;

	void drive() { //운전하는 기능
		System.out.println("drive, brrrr~");
	}

	void stop() { // 멈추는 기능
		System.out.println("stop!!!");
	}
}


class FireEngine extends Car {  // 소방차
	void water() {              // 물 뿌리는 기능
		System.out.println("warter!!!");
	}

	@Override
	void drive() {
		super.drive();
		System.out.println("소방차는 급해요~!");
	}
}

class Ambulance extends Car {  // 앰뷸런스
	void siren() {             // 사이렌을 울리는 기능
		System.out.println("siren~~~~");
	}
}


실행결과 :
drive, brrrr~
소방차는 급해요~!
drive, brrrr~





<정리>

1) 조상의 참조변수로 자손의 인스턴스는 무조건 참조가 가능하다.

(조상의 참조변수의 멤버수가 자손의 인스턴스의 멤버수보다 적기 때문에)

(자손 인스턴스는 조상의 멤버를 모두 상속 받기 때문에 조상의 멤버보다 같거나 많을수 밖에 없다.)

2) 자손의 참조변수로 조상의 인스턴스는 무조건 참조가 불가능 하다.

(자손의 참조변수의 멤버수가 조상의 인스턴스의 멤버수보다 많기 때문에)






출처 : 자바의 정석