본문 바로가기
컴퓨터/Java

[JAVA] 이것이 자바다 (신용권, 한빛미디어) 6단원 연습문제_5번 풀이

by 버니케이 2021. 11. 10.
반응형

이것이 자바다 (신용권, 한빛미디어) 연습문제 풀이

 

 

...

[6번]
다음 Chatting 클래스는 컴파일 에러가 발생합니다. 원인이 무엇입니까?

 

 

 

...

Chatting.java (오류 안나게 수정함)

package exercise.exercise06;

public class Chatting {
	
	void startChat(String chatId) {
		final String nickName = "닉네임";
		
		Chat chat = new Chat() {
			@Override
			public void start() {
			
					String inputData = "안녕하세요";
					String message = String.format("[%s] %s", nickName, inputData);
					sendMessage(message);
				
			}
		};
		chat.start();
	}

	class Chat{
		void start() {}
		void sendMessage(String message) {
			System.out.println("chat : "+message);
		}
	
	}
}

 

 

 

...

ChattingRun.java

package exercise.exercise06;

public class ChattingRun {

	public static void main(String[] args) {

		Chatting chatting = new Chatting();
		chatting.startChat("닉네임1");
		

	}

}

 

 

 

...

해설 

* 로컬 메소드에서 선언된 String nickName을 내부 객체에서 사용하면 nickName 은 final 특성을 갖게 된다.
* 그러므로 선언 후에 값을 대입해서 변경시킬 수 없다.

반응형

댓글