안드로이드 개발자의 창고
[7일차 Java] Interface(인터페이스) 본문
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT
📖 Interface란?
- 추상 메서드만 가지고 있는 요소로 인터페이스에 정의한 메서드는 추상 메서드이다.
- 인터페이스에 정의한 변수는 static final 변수이다.
- 자바에서 클래스는 하나의 클래스만 상속받을 수 있다.
- 여러 타입의 변수에 담을 수 있도록 사용하는 것이 Interface이다.
- 하나의 클래스는 다수의 Interface를 구현할 수 있다.
📖 예제 코드
interface TestInterface2 {
public void testMethod2();
}
interface TestInterface1 {
int a1 = 100;
public void testMethod1();
// 인터페이스에 static 메서드를 정의할 수 있다.
public static void testMethod100() {
System.out.println("testMethod100");
}
}
// 인터페이스를 구현한 클래스
class TestClass1 implements TestInterface1, TestInterface2 {
@Override
public void testMethod1() {
System.out.println("TestClass1의 testMethod1");
System.out.printf("a1 : %d\n", a1);
}
@Override
public void testMethod2() {
System.out.println("TestClass1의 testMethod2");
}
}
📖 인터페이스의 인터페이스 상속
- 다중 상속이 아니다.
- 자주 구현해야 하는 인터페이스들이 많을 경우, 하나의 인터페이스에 모두 상속 시키고 상속받은 인터페이스 하나만 클래스에 구현하면 편하게 사용할 수 있다.
📖 예제 코드
interface Inter1 {
public void inter1Method();
}
interface Inter2 {
public void inter2Method();
}
interface Inter3 {
public void inter3Method();
}
class TestClass100 {
public void testMethod1(Inter1 inter1) {
inter1.inter1Method();
}
public void testMethod2(Inter2 inter2) {
inter2.inter2Method();
}
public void testMethod3(Inter3 inter3) {
inter3.inter3Method();
}
}
class TestClass200 implements Inter1, Inter2, Inter3 {
@Override
public void inter3Method() {
// TODO Auto-generated method stub
System.out.println("TestClass200의 inter3Method");
}
@Override
public void inter2Method() {
System.out.println("TestClass200의 inter2Method");
}
@Override
public void inter1Method() {
System.out.println("TestClass200의 inter1Method");
}
}
// 인터페이스의 인터페이스 상속
interface Inter4 extends Inter1, Inter2, Inter3 {
public void inter4Method();
}
class TestClass400 implements Inter4 {
@Override
public void inter1Method() {
}
@Override
public void inter2Method() {
}
@Override
public void inter3Method() {
}
@Override
public void inter4Method() {
}
}
📖 dafault 메서드
- Java 버전에 따라서 안될 수도 있다.(Java 8부터 가능)
- 인터페이스에 있는 default 메서드는 클래스에 있는 메서드와 동일하게 동작한다.
- static이 아니기 때문에 인터페이스를 구현한 클래스의 객체를 통해 이 메서드를 호출할 수 있다.
- 메서드만 default로 정의할 수 있기 때문에 변수에 대해 default 메서드처럼 작업할 수 없다.
interface Inter500 {
// default 메서드
public default void defaultMethod() {
System.out.println("default Method");
}
}
// Inter500을 구현한 클래스
class TestClass500 implements Inter500 {
}
'Computer > Java' 카테고리의 다른 글
[8일차 Java] 예외처리(Exception) (0) | 2023.05.06 |
---|---|
[8일차 Java] Thread (0) | 2023.05.06 |
[7일차 Java] Abstract (2) | 2023.05.06 |
[7일차 Java] 중첩 클래스 (0) | 2023.05.06 |
[7일차 Java] final (0) | 2023.05.06 |