JAVA Polymorphism Upcasting Downcasting 자바 다형성 업 캐스팅 다운 캐스팅
다형성
다양한 형태가 존재한다는 의미이다. 다형성을 이용해 프로그래밍을 유연하게 만들 수 있다. 객체의 종류에 따라 달라지는 코드 사용을 프로그래밍 시 구분하지 않고 사용할 수 있도록 해준다. 따라서 프로그래밍이 단순해진다. 참조 변수에 객체를 할당해주는 기본적인 방법은 참조 변수의 자료형과 할당하고자 하는 객체의 자료형이 일치하는 것이다.
Upcasting 업 캐스팅
super 클래스형 참조 변수로 sub 클래스 객체를 가리키는 데 사용이 가능하다.
Person p = new UnivStudent();
Person p = (Person) (new UnivStudent());
sub 클래스 객체의 성질은 유지하면서 자동적으로 형 변환하는 것처럼 객체가 할당된다. Object 클래스형 참조 변수는 모든 클래스의 super 클래스이므로 모든 객체를 가리키는 데 사용 가능하다.
Downcasting 다운 캐스팅
기본적으로 다운 캐스팅은 불가능하다. 업 캐스팅된 참조 변수를 다시 다운 캐스팅해 자기 자신과 똑같은 형식으로 선언하는 것은 가능하다.
다형성 활용
다형성은 객체 배열에서 super 클래스형 객체 배열을 선언할 시 다양한 종류의 sub 클래스 객체를 포함시킬 수 있다. 매개변수에서 super 클래스형의 매개변수는 다양한 종류의 sub 클래스 객체를 넘겨받을 수 있다. 업 캐스팅된 참조 변수의 sub 클래스 멤버 중 상속받은 멤버에만 직접 접근이 가능하다. 만약 멤버가 오버 라이딩되었다면 자동으로 sub 클래스에서 정의된 것으로 접근이 된다. 상속받지 않은 멤버에 접근하기 위해서는 다운 캐스팅을 한 뒤에 조작해야 한다.
UnviStudent s = (UnviStudent) p; // 다운캐스팅 예1
s.WhoAreYou();
((UnviStudent)p).WhoAreYou(); // 다운캐스팅 예2
instanceof 연산자
참조 변수가 참조하고 있는 객체가 명시한 클래스로부터 생성되었는지 검사하여 boolean 값을 반환하는 연산자이다. super 클래스의 배열/매개변수를 통해 접근되는 객체의 실제 자료형을 확인할 수 있다. sub 클래스에 새로 추가된 멤버를 접근할 때 필요하다.
Object 클래스의 equals() 재정의
public boolean equals(Object obj){
boolean result = false;
if(obj != null && obj instanceof Person){ // obj가 참조되어있고, Person이 아닐때
Person p = (Person) obj; // 다운캐스팅
if((age == p.age)&& name.equals(p.name))
return true;
}
return result;
}
'JAVA Programming > JAVA 개념 정리' 카테고리의 다른 글
JAVA interface 인터페이스 abstract class 추상 클래스 (0) | 2021.12.02 |
---|---|
JAVA 상속과 다형성 (0) | 2021.12.01 |
JAVA Method Overriding 자바 메서드 오버 라이딩 (2) | 2021.11.11 |
JAVA 클래스 상속 (1) | 2021.11.10 |
JAVA 캡슐화 정보은닉 (12) | 2021.09.26 |