[설명]
[특징]
[사용이유]
[사용법]
인터페이스를 선언시 interface라는 키워드만 붙여주면 됨
인터페이스를 만들면 implements라는 키워드를 통해 객체들을 구현하는 용도로만 사용이 가능함
구체적인 대상을 생성할 수 없고 오로지 상수와 추상메서드만 사용이 가능함
메서드는 추상클래스에서 껍데기만 생성하고 상속하는 자식 클래스에서 오버라이딩하여 사용함
[예제]
// 인터페이스
public interface Animal {
public static final String name = "동물";
public abstract void cry();
public abstract void eat();
public abstract void run();
}
// 인터페이스에는 static,final로 생성할 수 있는
// 상수와 abstract로 생성할 수 있는 추상 메서드만
// 가질 수 있음
// 자식 클래스1
public class Dog implements Animal {
@Override
public void cry() {
System.out.println("왈왈!");
}
@Override
public void eat() {
System.out.println("와구와구!");
}
}
// Dog 클래스를 생성해 Animal 인터페이스를
// implements 키워드로 구현하고 인터페이스의
// 추상메서드들을 모두 재정의 함
// 자식 클래스2
public class Tiger implements Animal {
public void cry() {
System.out.println("어흥!");
}
@Override
public void eat() {
System.out.println("주왁주왁!");
}
}
// Tiger 클래스도 동일함
// 인터페이스의 추상메서드들을 오버라이드함
// 출력 클래스
public class AnimalTest {
public static void main(String[] args) {
// 참조타입, 참조변수를 사용하기 위해
// 인스턴스(객체)를 생성해줌
Dog dog = new Dog();
Tiger tiger = new Tiger();
// 각 클래스들은 호출하고자하는 메서드를
// 호출하여 출력함
dog.cry(); // 왈왈
dog.eat(); // 와구와구!
tiger.cry(); // 어흥!
tiger.eat(); // 주왁주왁!
}
}
[인터페이스끼리 상속]
인터페이스끼리도 상속을 통해서 확장을 시켜나갈 수 있음
하위 인터페이스에서 네이밍을 강제하여 객체간의 통일성을 추구할 수 있음
인터페이스로 객체를 구현할 때는 implements라는 키워드를 사용하지만 인터페이스끼리 상속을 할때는 클래스와 마찬가지로 extends 키워드를 사용함!
[예제]
// class 끼리 상속
class
↑ [extends]
class
// class가 interface를 상속
interface
↑ [implements]
class
// interface끼리 상속
interface
↑ [extends]
interface