본문 바로가기
Back-End/Java

TIL 230523 : 클래스 안에 클래스 안에 필드는?? (feat. 다중상속)

by 우인입니다 2023. 5. 23.

Car라는 클래스의 필드영역에 price를 선언했다.

 

 

외부에서 도트연산자로 Car 클래스로 생성된 car1객체내의 필드에 접근한 것을 알 수 있었다.

 

 

Car클래스 안에 Door클래스의 생성자를 포함했고 Door클래스안에 color라는 String을 선언했을 때, car1.door.color="red";와 같은 방식으로 접근할 수 있을까?

 

실패했다.

 

intelliJ에서 추천하는 솔루션은 public Object color가 Door클래스에 선언하는 것이었다.

 

적용했더니, Door 클래스안에서 color 변수를 public으

로 선언했고, 그렇게 적용하고 나니 접근이 가능해졌다.

 

왜 Object지? String으로 바꿔봤음에도 동작했다.

 

 

자바공식문서보면 String이 Object 하위에 있는것처럼 보였다. 참조형 변수타입이면 다 되는건가.

 

 

 

기본형 변수타입 int 에 public 선언해서 해보니 동작하는 걸로 보아 기본적으로 접근할 수 있는 범위를 더 넓혀주는 개념인듯하다.


+이게 다중상속이라고 하더라

근데 관련해서 알아보니. 이러한 개념이 '다중 상속'인데 자바에서는 과하게 꼬일것을 방지하고자 다중상속이 안된다고 한다.

 

오버라이딩된 클래스입장에서 어떤 부모의 메소드를 호출할지 명확해지지 않는 문제가 생긴다고 한다.

이와 관련한 심화 내용은 상속, 오버라이딩, 인터페이스 등 학습한뒤 심화로 배워봐야겠다.

 

 

 

 

 

그외 배운거

클래스 멤버 -> 인스턴스 없이도 가능. 클래스 불러올 때 바로 로더에 의해 메모리할당됨.

매소드 오버로딩 -> 매개변수가 달라도 다 준비해둬서 대응이 가능한것.