내부 클래스의 활용 예제 질문
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
모든 Car instance들이 하나의 engine instance를 참조하게 해보고 싶어
private static Engine engine = new Engine();
이런식으로 Car 클래스 안에 정적 변수를 만들고 engine instance를 참조 하게 만들어 봤는데 'Car.this' cannot be referenced from a static context란 에러가 뜨네요.
생성자에서 안에서는
public Car(String model, int chargeLevel) {
this.model = model;
this.chargeLevel = chargeLevel;
if (engine == null) {
engine = new Engine();
}
}이런식으로 정적 변수가 engine instance를 참조가 가능한데, 에러가 나는 이유와 생성자안에서는 왜 참조가 가능한지 궁금합니다.
답변 1
2
안녕하세요. Jin Jung 님, 공식 서포터즈 코즈위버입니다.
메서드 내에서의 this와 생성자 안에서의 this 가 조금 다르게 해석되어 그런 차이가 발생합니다.
메서드 내에서의 this는 인스턴스 자신을 의미하나 생성자 안에서는 인스턴스 자신과 클래스 까지 포함하는 의미를 갖습니다. 그래서 static 변수인 engine 에 접근할 수 있습니다. 생성자 안의 this.engine 은 Car.engine 과 동일한 의미를 갖게 됩니다.
그러나 정적 요소에 대해 this 접근은 혼란을 줄 수 있으므로 항상 클래스명으로 접근하여 사용하도록 코드를 작성해주시기 바랍니다.
감사합니다.
문제와 풀이
0
22
1
섹션 2 퀴즈 9번
0
30
2
강의노트 내용이 이해가 되지 않아서 문의드립니다.
0
46
1
중급1편, 래퍼클래스 문제와풀이2 로또제너레이터 질문
0
66
1
setVlaue질문
0
90
3
안녕하세요 코딩테스트와 병행하고 싶어서 질문드립니다.
0
91
1
findValue의 파라메터까지 래퍼클래스 배열인 이유가 있을까요?
0
73
1
아래 글처럼 toString() 강의부터 화면이 안보여요
0
97
2
TemporalAdjusters의 lastDayOfNextMonth(), lastDayOfNextYear() 메서드 지원 안함
0
84
2
오타 제보도 되나요?
0
90
2
지역 클래스 예제3 지역변수 질문
0
69
2
래퍼클래스 박싱 출력
0
60
1
자바 equals() 메소드에 대한 물리적 동일성, 논리적 동등성 질문
0
105
3
강의록 오타 제보
0
68
2
자바의 기본 클래스들에 관하여
0
70
1
실무에서 중첩(내부) 클래스 사용하나요?
0
79
1
지역 클래스 - 지역 변수 캡처3
0
54
1
12:30 의 newClassGrade 질문이 있습니다.
0
56
1
날짜와 시간 문제풀이가 막히는데
0
98
2
내부 클래스의 바깥 클래스 참조
0
68
1
스트링 풀, new String()
0
105
3
정적 중첩 클래스 사용 이유
0
97
1
status.getCode() 대신 status.code 사용
1
80
1
메서드의 지역변수명과 내부클래스의 멤버메서드에서의 지역변수명의 중복관련
0
75
1





