Beny's Study
01. 다형성 본문
목차
- 다형성
-클래스형변환_업캐스팅
-클래스형변환_다운캐스팅
-참조변수의 형변환
-객체배열과 다형성
-매개변수와 다형성
다형성
■ 객체지향 프로그래밍의 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차 변형 등을 할 경우
민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."
'[JAVA] > 09. 다형성' 카테고리의 다른 글
06. (표) 추상클래스와 인터페이스의 차이 (0) | 2022.04.14 |
---|---|
05. 인터페이스 (0) | 2022.04.14 |
04. 추상클래스(abstract class) (0) | 2022.04.14 |
03. 바인딩 (0) | 2022.04.14 |
02. instanceof 연산자 (0) | 2022.04.14 |