JAVA Polymorphism Upcasting Downcasting 자바 다형성 업 캐스팅 다운...

JAVA Polymorphism Upcasting Downcasting 자바 다형성 업 캐스팅 다운...

728x90

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; }

728x90

from http://psy-er.tistory.com/75 by ccl(A) rewrite - 2021-11-12 02:28:35