혼자 공부하는 자바 09장 중첩 클래스와 중첩 인터페이스 확인 문제

2023. 2. 18. 23:00공부/자바

반응형

 

 
혼자 공부하는 자바
혼자 해도 충분하다! 1:1 과외하듯 배우는 자바 프로그래밍 자습서 (JAVA 8 &11 지원) 이 책은 독학으로 자바를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학습해야 할지 조차 모르는 입문자의 막연한 마음을 살펴, 과외 선생님이 알려주듯 친절하게, 그러나 핵심적인 내용만 콕콕 집어준다. 책의 첫 페이지를 펼쳐서 마지막 페이지를 덮을 때까지, 혼자서도 충분히 자바를 배울 수 있다는 자신감과 확신이 계속될 것이다! 20명의 베타리더 검증으로, ‘함께 만든’ 입문자 맞춤형 도서 20명의 베타리더와 함께 구성하여 입문자에게 맞는 난이도, 분량, 학습 요소 등을 적극 반영했다. 어려운 용어와 개념은 한번 더 풀어 쓰고, 복잡한 설명은 눈에 잘 들어오는 그림으로 풀어 냈다. ‘혼자 공부해본’ 여러 입문자의 초심과 눈높이가 책 곳곳에 반영된 것이 이 책의 가장 큰 장점이다.
저자
신용권
출판
한빛미디어
출판일
2019.06.10

 

<혼자 공부하는 자바> 신용권 저, 한빛 미디어 출판(2019.06.10)

 

※ 직접 풀이한 문제

 

 

08-1 확인 문제

08-1-1 맞는 것에 O표, 틀린 것에 X표 하세요.

  1. o
  2. o
  3. o
  4. x - 정적 멤버 클래스는 바깥 클래스의 객체 없이도 만들 수 있는데 이 때 바깥 클래스의 인스턴스 필드는 사용이 불가능하다.

08-1-2 틀린 것은 무엇입니까?

  • ③ - 로컬 클래스는 static 키워드 사용이 불가능하다.

08-1-3 코드를 빈 칸에 작성해 보세요.

//answer- NestedClassExample.java
package sec01.verify.exam03;

public class NestedClassExample{
	public static void main(String[] args){
		Car myCar=new Car();
		Car.Tire tire=myCar.new Tire();
		Car.Engine engine=new Car.Engine();
	}
}

08-1-4 컴파일 에러가 발생합니다. 원인 무엇입니까?

  • Chat 클래스 start() 메소드에서 String message="["+nickName+"] "+inputData;에서 nickName은 바깥 클래스 즉, Chatting의 인스턴스 멤버 변수이다. 하지만 컴파일러는 이를 Chat 클래스의 인스턴스 멤버 변수로 보고 있어서 찾지 못한다.

08-1-5 BackgroundChangeListener 클래스를 작성해보세요.

// answer - BackgroundChangeListener.java
package sec01.verify.exam05;

public class BackgroundChangeListener  implements CheckBox.OnSelectListener{
	@Override
	public void onSelect() {
		System.out.println("배경색을 변경합니다.");
	}
}

 

08-2 확인 문제

 

08-2-1 로컬 변수의 초기값과 메소드의 매개값을 대입해보세요.

//answer- Anonymous.java
package sec02.verify.exam01;

public class Anonymous{
	Worker field=new Worker(){
		@Override
		public void start(){
			System.out.println("디자인을 합니다.");
		}
	};
	void method1(){
		Worker localVar=new Worker(){
			@Override
			public void start(){
				System.out.println("개발을 합니다.");
			}
		};
		localVar.start();
	}
	void method2(Worker worker){
		worker.start();
	}
}
//answer - AnonymousExample.java
package sec02.verify.exam01;

public class AnonymousExample{
	public static void main(String[] args){
		Anonymous anony=new Anonymous();
		anony.field.start();
		anony.method1();
		anony.method2(
			new Worker(){
				@Override
				public void start(){
					System.out.println("테스트를 합니다.");
				}
			}
		);
	}
}

08-2-2 로컬 변수의 초기값과 메소드의 매개값을 대입해보세요.

//answer - Anonymous.java
package sec02.verify.exam02;

public class Anonymous{
	Vehicle field=new Vehicle(){
		@Override
		public void run(){
			System.out.println("자전거가 달립니다.");
		}
	};
	void method1(){
		Vehicle localVar=new Vehicle(){
			@Override
			public void run(){
				System.out.println("승용차가 달립니다.");
			}
		};
		localVar.run();
	}
	void method2(Vehicle v){
		v.run();
	}
}
//answer - AnonymousExample.java
package sec02.verify.exam02;

public class AnonymousExample{
	public static void main(String[] args){
		Anonymous anony=new Anonymous();
		anony.field.run();
		anony.method1();
		anony.method2(
			new Vehicle(){
				@Override
				public void run(){
					System.out.println("트럭이 달립니다.");
				}
			}
		);
	}
}

08-2-3 익명 구현 객체를 작성해보세요.

//answer- CheckBoxExample.java
package sec02.verify.exam03;

public class CheckBoxExample{
	public static void main(String[] args){
		CheckBox checkBox=new CheckBox();
		checkBox.setOnSelectListener(
			new CheckBox.OnSelectListener(){
				@Override
				public void onSelect(){
					System.out.println("배경을 변경합니다.");
				}
			}
		);
		checkBox.select();
	}
}

 

반응형