본문 바로가기
Java

[JAVA] 추상 클래스, 객체 형변환

by ahj 2021. 10. 7.

어렵다. 뭔말인지 알듯하면서도 잘 와닿지가 않는다.

나는 학습을 할 때 항상 "왜?"라는 질문이 따라오는 것 같다.

추상 클래스를 왜 사용해야 하는지 형변환을 왜 해야하는지

 

추상 클래스는 결국 범용성을 위해서 사용하는 듯 하다.

 

예를 들어 각 TV class마다 method들이 다 같은 동작인데 이름을 다르게 쓰고 있다고 해보자

TV 사용자 입장에서 A사의 TV를 쓰다가 B사의 TV로 바꿨을 때 method 이름들이 달라서 다시 method 이름들을 일일이 학습해야하는 불상사가 생길 수 있는 것이다.

이를 방지하고자 부모 class인 TV class에서 추상 method로 미리 이름은 다 지정해놓는 거다. 그러면 자식들이 그거를 가져다가 overriding하면서 다른 TV지만 같은 기능들을 같은 method로 구현할 수 있게 된다.

 

여기까지 OK

 

추가적으로 이해해야 할 것 -> 이름이 없는 지역 내부 클래스

그냥 간단히 일회용 클래스라고 생각하면 되는 걸까? -> 22.01.06 예스 맞는듯

 

객체 형변환 내용은 SW 아카데미에서 자바 강의 이상한 것 같다. 내가 잘못 이해한 줄 알고 몇번을 돌려봤는지..

부모 클래스는 Employee이고 자식 클래스가 Manager다.

+그림은 삭제 혹시 몰라서.. sw아카데미 수강한 사람들은 알것!

이게 왜 묵시적 형변환이지? 그냥 알맞게 한 거 아닌가.. 

이건 또 왜 문제가 있는 소스코드라는 것인가... 이게 묵시적 형변환 아닌가??

분명 부모타입으로 자식타입의 객체를 참조할 때는 묵시적으로 형변환이 일어난다고 했는데

부모(Employee) 타입으로 자식(Manager) 객체를 참조했으니까 이게 묵시적 변환인데.. 아놔 이거로 몇십분은 날렸다

 

설명이 좀 그래서 구글링을 통해 찾아보니

https://ok4u.tistory.com/134

 

[JAVA] 객체의 형변환

- 대입 연산자를 기준으로 왼쪽과 오른쪽 변수의 자료형이 서로 달랐을 경우 객체 형변환이 발생한다. 그런데 무조건 왼쪽과 오른쪽의 관계가 반드시 상속 관계여야 한다. A obj = new B(); → 에러

ok4u.tistory.com

이 블로그에서 정리해놓으신 내용이 적절하고 이해가 되었다. 다형성 이해하기 어렵네.. 일단 목적을 알아야겠다.

내가 이해한 게 맞다. 다만 상속관계 객체 간 형변환에서 명시적이 일어나기 위해선 묵시적이 한번 일어나고 명시적이 일어나야 오류가 없다는 건 실행해본 자만이 줄 수 있는 꿀팁..!

 

 

오늘 생각한 것과 연결 - 상속 관계는 외연, 내포의 관계로도 볼 수 있는 것 같다.

 

묵시적 형변환 후 변수 호출, 메서드 호출 시

변수에 대한 접근은 객체의 유형에 의해 결정(부모 클래스 변수)

메서드 호출은 할당되는 인스턴스에 의해 결정(자식 클래스 메서드 호출)

'Java' 카테고리의 다른 글

[JAVA] 인터페이스  (0) 2021.10.07
[JAVA] 매개변수 - 기본형|값복사, 참조형|주소복사  (0) 2021.10.05
[Java] this, super  (0) 2021.10.05
[JAVA] 생활코딩 강의 시작  (0) 2021.09.25
[Java] 객체지향 언어  (0) 2021.09.08

댓글