자바

다형성

코딩만만세 2024. 5. 1. 16:33

다형성(Polymorphism)
- 다형성이란 "객체가 여러 형태를 가진다"라는 의미로 해석되며, 하나의 객체가 여러가지 유형으로
사용되는 것을 의미합니다.
- 다형성은 상속을 전제조건으로 합니다.
- 다형성을 위해 자바는 자식클래스가 부모클래스의 타입을 가질 수 있도록 허용합니다. 즉, 부모 타
입에 모든 자식객체가 대입될 수 있습니다.

 

부모클래스 변수 = new 자식클래스()
이때.
부모클래스에 있는 기능만 사용할 수 있지만,
오버라이딩 된 메서드는 먼저 실행됩니다

 

다형성 basic

Student, Teacher, Employee(자식클래스)
로 생성해서 Person(부모) 타입에
저장 할 수 있다

 

이 때, 부모에 있는 메서드만 실행가능 하며
overriding메서드는 우선 실행된다

 

클래스 Casting

강제 타입 변환(Type Casting)
- 강제 타입 변환은 부모 타입을 자식 타입으로 변환하는 것을 말합니다.
- 객체에서 타입 캐스팅을 사용하려면 우선 먼저 Promotion이 일어나야 합니다. 즉, 부모 타입으로 한번
형 변환이 된 자식 객체만 강제 타입 변환을 사용할 수 있습니다.
- Promotion이 일어나면 자식 클래스가 가지고 있는 재정의되지 않은 메서드를 사용할 수 없다는 단점
이 있었습니다. 이 단점을 극복하기 위해 강제 타입 변환을 사용하여 자식 메서드를 호출하는 방법을 사
용합니다.

 

public class MainClass {
public static void main(String[] args) {
Parent p = new Child();
Child c = (Child)new Parent();
c.method3();
}
}

클래스 타입의 형 변환이 가능하다
다시 Child 타입의 기능 사용이 가능해 진다.

 

이종 모음 도 다형성의 원리이다

이종모음(Heterogeneous Collection)
- 이종모음은 배열에 다형성을 적용시키는 원리입니다. 배열은 원래 동종모음 구조입니다.
- 예를 들어 int[] iArr = new int[10]; 이런 구조의 배열이 있다면 iArr배열에는 int형 정수 데이터만
저장할 수 있습니다.
- 하지만 다형성을 이용하면 이종모음 구조의 객체 배열이 생성 가능합니다.

 

부모 타입 배열에 자식 객체가
저장 될 수 있다.

 

매개변수의 다형성

매개 변수의 다형성
- promotion은 멤버 변수의 값을 대입할 때도 발생하지만, 메서드를 호출할 때 사용하는 매개 변
수에도 발생할 수 있습니다.
- 보통 메서드를 호출할 때는 메서드 선언부에서 지정한 데이터 타입과 일치하는 매개값을 전달하
여 호출하지만, 매개 변수에 다형성을 적용하면 자식 객체를 전달할 수도 있습니다.

매개변수에 객체를 전달하려면
타입을 클래스 타입을 적어주면 된다
이 때 Person의 자식 클래스는
전부 전달 될 수 있다

 

클래스 타입 확인! instanceof 키워드

instanceof
- 자바의 키워드 중에서 instanceof 는 객체가 지정한 클래스의 인스턴스인지 아닌지 검사할 때 사용하는 연산자입니다.
- instanceof 연산자의 왼쪽 항의 객체가 오른쪽 항 클래스의 인스턴스 즉, 오른쪽 항의 객체가 생성되었다면 true를 리턴하
고, 그렇지 않으면 false를 리턴합니다.

 

 

 

 

 

 

 

 

 

 

 

- ex) Person p = new Student();
p instanceof Student -> true

'자바' 카테고리의 다른 글

final  (0) 2024.05.01
정적 제한자 static  (1) 2024.05.01
접근 제한자  (0) 2024.05.01
this와 super  (0) 2024.05.01
메서드 재정의(Overriding)  (0) 2024.04.30