어서와 Java는 처음이지! 제9장 인터페이스, 패키지
인터페이스 인터페이스(interafce)는 서로 다른 장치들이 연결되어서 상호 데이터를 주고받는 규격을 의미한다
자바 인터페이스 클래스와 클래스 사이의 상호 작용의 규격을 나타낸 것이 인터페이스이다
인터페이스의 예 스마트 홈 시스템(Smart Home System)
인터페이스의 정의 public interface RemoteControl { // 추상 메소드 정의 public void turnOn(); // 가전 제품을 켠다. public void turnOff(); // 가전 제품을 끈다. }
인터페이스 구현 public class 클래스_이름 implements 인터페이스_이름 { 반환형 추상메소드1(...) { 반환형 추상메소드1(...) { ..... } 반환형 추상메소드2(...) {
홈네트워킹 예제 public interface RemoteControl { public void turnOn(); // 가전 제품을 켠다. public void turnOff(); // 가전 제품을 끈다. } 인터페이스를 구현 public class Television implements RemoteControl { public void turnOn() { // 실제로 TV의 전원을 켜기 위한 코드가 들어 간다. } public void turnOff() // 실제로 TV의 전원을 끄기 위한 코드가 들어 간다.
홈네트워킹 예제 Television t = new Television(); t.turnOn(); t.turnOff(); t
인터페이스와 타입 인터페이스는 하나의 타입으로 간주된다. RemoteControl obj = new Television(); obj.turnOn(); obj.turnOff(); 인터페이스로 참조 변수를 만들 수 있다.
인터페이스 상속하기 인터페이스가 인터페이스를 상속받는 것도 가능하다. public interface AdvancedRemoteControl extends RemoteControl { public void volumeUp(); // 가전제품의 볼륨을 높인다. public void volumeDown();// 가전제품의 볼륨을 낮춘다. }
다중 상속 다중 상속(Multiple inheritance)은 하나의 클래스가 여러 개의 부모 클래스를 가지는 것이다. 예를 들어서 하늘을 나는 자동차는 자동차의 특성도 가지고 있지만 비행기의 특징도 가지고 있다.
다중 상속 다중 상속이란 여러 개의 수퍼 클래스로부터 상속하는 것 자바에서는 다중 상속을 지원하지 않는다. 다중 상속에는 어려운 문제가 발생한다. class SuperA { int x; } class SuperB { int x; } class Sub extends SuperA, SuperB // 만약에 다중 상속이 허용된다면 { ... } Sub obj = new Sub(); obj.x = 10; // obj.x는 어떤 수퍼 클래스의 x를 참조하는가?
다중 상속 인터페이스를 이용하면 다중 상속의 효과를 낼 수 있다. class Shape { protected int x, y; } interface Drawable { void draw(); }; public class Rectangle extends Shape implements Drawable { int width, height; public void draw() { System.out.println("Rectangle Draw");
패키지 패키지(package)는 서로 관련 있는 클래스나 인터페이스들을 하나로 묶은 것이다.
자바가 제공하는 라이브러리도 기능별로 패키지로 묶여서 제공되고 있다.
패키지를 사용하는 이유 패키지를 이용하면 서로 관련된 클래스들을 하나의 단위로 모을 수 있다. 패키지를 이용하여서 더욱 세밀한 접근 제어를 구현할 수 있다. 패키지를 사용하는 가장 중요한 이유는 바로 “이름공간(name space)” 때문이다.
패키지의 정의
패키지 정의
Q & A