원시 타입에서 정수형(int)을 실수형(double)으로 실수형(double)을 정수형(int)으로 출력하는 경우가 있다.
클래스의 경우에도 상속관계에 있는 부모와 자식 간의 형 변환이 일어나는 경우가 있는데
이를 업 캐스팅(Upcasting)과 다운캐스팅(Downcasting)이라 부른다.
업 캐스팅이란 자식 클래스의 객체가 부모 클래스 타입으로 형 변화 되는 것을 말한다.
예를 들어 Parents 라는 부모 클래스와 Child라는 자식 클래스가 존재하며
Parents의 객체 p와 Child의 객체 c가 존재 한다고 할 때
Parents p = (Parents)c 와 같은 형식으로 적용할 시 이를 업 캐스팅이라고 한다.
다운 캐스팅의 경우 업 캐스팅된 것을 다시 원래 상태로 돌리는 것을 말하며 하위 클래스로 다운 캐스팅할 때에는
Parents p = new Child("홍길동");
Child c = (Child)p; 와 같이 타입을 명시적으로 지정해줘야 한다는 특징이 있다.
우리가 객체끼리의 값을 비교하게 되면 서로 다른 주소 값에 정보가 저장되어 있기 때문에 다르다고 나오게 된다.
만약, 객체안의 변수값이 같을 경우를 비교하고 싶다면 우리는 equals 함수를 오버 라이딩하여 재정의 해줄 수 있다.
예를 들어 홍길동이라는 동명이인의 p1객체와 p2객체가 존재할때 기존의 equals 함수로 이들을 비교하면
같지 않다고 나오는데 p1과 p2의 주소값을 비교하기 때문이다. equals를 우리가 원하는 객체 안의 이름을
비교하게 만들어주기 위해서는 equals함수를 오버라이딩하여 그 재정의 해줄 필요가 있다.
그 후 인자 값으로 들어가는 Object 클래스의 객체값을 parents 클래스로 다운 캐스팅해줄 필요가 있다.
Object 클래스의 객체는 이름값을 가지고 있지 않기 때문에 이름값을 가지고 있는 parents로 낮춰준 것이다.
'Java > study' 카테고리의 다른 글
추상클래스와 인터페이스 (0) | 2022.06.22 |
---|---|
동적 바인딩 (0) | 2022.06.22 |
접근제어자 (0) | 2022.06.20 |
오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2022.06.20 |
클래스와 객체 (0) | 2022.06.16 |