[JAVA]/09. 다형성

01. 다형성

76beny 2022. 4. 14. 17:45

목차

- 다형성

-클래스형변환_업캐스팅

-클래스형변환_다운캐스팅

-참조변수의 형변환

-객체배열과 다형성

-매개변수와 다형성

 


다형성

■ 객체지향 프로그래밍의 3대 특징 중 하나
 ‘여러 개의 형태를 갖는다’는 의미로
 하나의 행동으로 여러 가지 일을 수행하는 개념
 상속을 이용해 부모 타입으로부터 파생된 여러 가지 타입의 자식 객체를 부모 클래스 타입 하나로 다룰 수 있는 기술

 

클래스 형변환_ 업캐스팅

■ 상속 관계에 있는 부모, 자식 클래스 간에 부모타입의 참조형 변수가 모든 자식 타입의 객체 주소를 받을 수 있음

■ 자식 객체의 주소를 전달받은 부모타입의 참조변수를 통해서 사용할 수 있는 후손의 정보는 원래 부모타입이었던

     멤버만 참조 가능

//Sonata 클래스는 Car 클래스의 후손
Car c = new Sonata();
//Sonata클래스형에서 Car클래스형으로 바뀜

 

참조변수의 형변환

■ 조상,자손간의 참조변수는 형변환 가능

■ 자손끼리는 불가능

■ 사용목적 : 참조변수(리모콘)을 변경함으로서 사용할수 있는 멤버개수조절함!

 

 

클래스 형변환_다운캐스팅

■ 자식 객체의 주소를 받은 부모 참조형 변수를 가지고 자식의 멤버를 참조해야 할 경우, 

     부모 클래스 타입의 참조형 변수를 자식 클래스타입으로 형 변환하는 것
■ 자동으로 처리되지 않기 때문에 반드시 후손 타입 명시해서 형 변환

*클래스 간의 형 변환은 반드시 상속 관계에 있는 클래스끼리만 가능

//Sonata 클래스는 Car 클래스의 후손
Car c = new Sonata();
((Sonata)c).moveSonata();

 

 

객체배열과 다형성

■ 다형성을 이용하여 상속 관계에 있는 하나의 부모 클래스 타입의 배열 공간에 여러 종류의 자식 클래스 객체 저장 가능

Car[] carArr = new Car[5]; 

carArr[0] = new Sonata();
carArr[1] = new Avante();
carArr[2] = new Grandure();
carArr[3] = new Spark();
carArr[4] = new Morning();

 

매개변수와 다형성

■ 다형성을 이용하여 메소드 호출 시 부모타입의 변수 하나만 사용해 자식 타입의 객체를 받을 수 있음

■ 매개변수 다형성의 장점

-다형적 매개변수

- 하나의 배열로 여러가지 객체다루기

*참조형 매개변수는 메서드 호출 시 자신과 같은타입 또는 자손타입의 인스턴스 넘겨줄 수 있음.

public void execute() {
	driveCar(new Sonata()); 
	driveCar(new Avante());
	driveCar(new Grandure());
}

public void driveCar(Car c) {}//

 


"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.

이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우

민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."