해결된 질문
작성
·
72
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 트릴님.
자식 클래스와 부모 클래스 간의 상속 관계에서 this
키워드를 사용하여 멤버 변수를 초기화할 때의 동작과 관련하여 질문 주셔서 감사합니다.
자바에서 클래스는 멤버 변수의 값을 클래스의 생성자 내에서 this
키워드를 사용하여 초기화할 수 있습니다. this
는 현재 객체의 인스턴스를 참조하는 키워드로, 자식 클래스 생성자 안에서 사용되면 자식 클래스 자신의 멤버 변수를 의미합니다.
부모 클래스의 멤버 변수 price
가 ElectricCar
자식 클래스의 생성자에서 this.price
로 바이패스되기 보다는, 상속 구조에서 자식 객체가 생성될 때 부모 클래스의 멤버도 객체의 일부로 포함됩니다. 두 클래스가 같은 변수명을 사용하면, 자식의 멤버 변수가 부모의 변수를 덮어쓸 수 있습니다.
ElectricCar
의 생성자ElectricCar
생성자에서 this.price = price;
구문이 있다면, 이 구문은 자식 클래스의 price
를 가리키게 되고 이 값이 Car
클래스의 price
와 연결되어 부모 객체의 값에도 영향을 미칩니다. 왜냐하면, 상속된 price
변수는 클래스의 일부분이 되어 같은 스코프를 공유하기 때문입니다.
printCar()
메서드의 실행 결과printCar()
메서드에서 호출된 price
는 자식 클래스에서 초기화된 값이 1000으로 설정되었기 때문에, 부모 클래스의 price
에 설정된 기본값인 100이 들어가지 않고 1000으로 덮어쓰여진 것을 보여줍니다.
만약 printCar()
결과에서 두 번의 1000 출력이 있는 경우, 이 의미는 자식의 price
와 부모의 price
모두가 초기화를 통해 동일한 값을 갖고 있다는 것입니다.
이러한 개념은 상속과 객체의 메모리 구조와 직접적인 관련이 있으며, 다형성과 부모-자식 클래스 간의 스코프에 대해 좀 더 깊게 이해해야 완전히 숙지할 수 있는 주제입니다. 이 주제에 대한 심화된 내용을 원하시면 아래 링크들을 확인하시길 추천드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다. 하나 더 배워가네요.