해결된 질문
작성
·
46
답변 2
0
저장이 안된다는 게 무슨 뜻이실까요? 각각의 인스턴스 변수에 저장이 되어서 각각 50km, 30km가 출력될 수 있는 것입니다.
car1, car2 두 개의 객체는 아예 다릅니다. 다른 공간에 있는 객체입니다. 겹쳐서 80이 될 수가 없습니다. 그리고 this.speed = 0;을 주석처리해도 정상적으로 동작하긴 합니다. 0으로 초기화하지 않아도 java는 정수형 int로 선언한 변수를 0으로 기본값 세팅해줍니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김현석님.
고객님께서 강의 내용을 이해하는 데 도움이 될 수 있는 기존 질문&답변을 탐색한 결과, speed 변수 저장
과 관련된 주제로 유용한 자료를 발견했습니다.
질문하신 speed += increment;
문장에서, 스피드 값이 저장되지 않는 이유에 대해 생각하셨듯이 생성자에서 this.speed = 0;
으로 초기화했기 때문일 가능성이 큽니다. 초기화가 지속적으로 이루어진다면, 이후의 증가 연산이 무의미해져 값이 변동 없이 유지될 상황을 만들 수 있습니다. 이러한 경우 해당 생성자가 각 메소드 호출 시마다 호출되어 다시 0으로 초기화되는 지점이 문제일 가능성이 있습니다.
생성자에서 this.speed = 0;
을 삭제한다면, speed가 누적 증가되어 “Hyundai 속도 증가: 80km/h”처럼 변경된 값이 그대로 적용될 것입니다. 하지만 이는 해당 논리 및 연산이 정확히 어떤 순서로 이루어지는지에 달렸으므로, 코드의 세부 구조를 확인해야 정확한 출력을 보장할 수 있습니다.
비슷한 주제를 다루는 기존 질문이 있어 소개드립니다:
클래스 변수와 인스턴스 변수의 차이: 이 게시물에서는 객체 지향 프로그래밍에서 변수의 초기화와 값 저장 방식에 대한 깊이 있는 설명을 제공합니다.
생성자 내 초기화 관련: 생성자 사용 및 초기화 방법에 대한 설명을 제공하며 객체 생성 시 주의해야 할 점이 논의된 자료입니다.
이 자료들이 김현석님의 질문과 관련된 이해를 돕는 데 유용할 것입니다. 추가적인 질문이 생긴다면, 언제든지 이어서 문의해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.