본문 바로가기
혼공학습단

[혼공단12기] 혼자 공부하는 자바(개정판) 5주차(Chapter 08 ~ 09)

by #FF0000 2024. 7. 28.

 

 

 

혼자 공부하는 자바 - 예스24

혼자 해도 충분하다! 1:1 과외하듯 배우는 자바 프로그래밍 자습서(자바 21 최신 버전 반영)26명의 베타리더 검증으로, ‘함께 만든’ 입문자 맞춤형 도서『혼자 공부하는 자바』가 더욱 풍성한

www.yes24.com

https://www.yes24.com/Product/Goods/124821050

 


5주차(24.8.5- 8.11) Chapter 08 ~ 09

 

기본미션

▶ 클래스 선언 시 인터페이스는 어떻게 선언 되는가?

클래스를 선언할 때 인터페이스는

  • 필드
  • 생성자 또는 메소드의 매개 변수
  • 생성자 또는 메소드의 로컬 변수

로 선언 될 수 있다.

인터페이스 선언은 class 키워드 대신에 interface 키워드 사용
(인터페이스 일므은 영어 대소문자를 구분하며, 첫 글자를 대문자로 하고 나머지는 소문자로 작성)

[public] interface 인터페이스이름 {...}

 

interface 인터페이스이름 {
	//상수
    타입 상수이름 = 값;
    //추상 메소드
    타입 메소드이름(매개변수, ...);
}

 

1. 인터페이스가 필드 타입으로 사용될 경우

   → 필드에 구현 객체를 대입 할 수 있음.

2. 인터페이스가 생성자의 매개 변수 타입으로 사용될 경우

   → new 연산자로 객체를 생성할 때 구현 객체를 생성자의 매개값으로 대입 할 수 있음.

3. 인터페이스가 로컬 변수 타입으로 사용될 경우

   →  변수에 구현 객체를 대입 할 수 있음.

4. 인터페이스가 메소드의 매개 변수 타입으로 사용될 경우

   → 메소드 호출 시 구현 객체를 매개값으로 대입 할 수 있음

 

★ 대입이 된 후에는 재 정의된 구현 객체의 메소드를 호출 할 수 있음.

 

//인터페이스로 구현 객체 사용
public class MyClass {
	// 필드
	RemoteControl rc = new Television();

	// 생성자
	MyClass() {
	}

	MyClass(RemoteControl rc) {
		this.rc = rc;
		rc.turnOn();
		rc.setVolume(5);
	}

	// 메소드
	void methodA() {
		RemoteControl rc = new Audio();
		rc.turnOn();
		rc.setVolume(5);
	}

	void methodB(RemoteControl rc) {
		rc.turnOn();
		rc.setVolume(5);
	}
}

 

 

선택미션

▶ 09-1 확인문제 3번 풀이(p.443)

Q. 다음과 같이 Car 클래스 내부에 Tire와 Engine이 멤버 클래스로 선언되어 있습니다. 바깥 클래스(NestedClassExample)에서 멤버 클래스의 객체를 생성하는 코드를 빈칸에 작성해보세요.

 

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

 

solve

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();
	}
}