인터페이스
- 인터페이스는 추상 메서드로만 구현되어 있는 것을 가리킨다
- 자바에서는 단일 상속만 지원을 하므로 추상 클래스를 하나 이상 상속받을 수 없다
- 자바에서는 인터페이스를 통해 반드시 구현해야 할 메서드를 동시에 여러 개를 구현할 수 있다
- 인터페이스는 다중 상속을 지원하기 위해서 제공하는 것이 아니라 하나의 클래스를 여러 종류의 참조 변수를 통해 접근할 수 있고 메서드를 호출할 수 있도록 지원되는 개념이다
- 인터페이스에 정의된 메서드는 모두 추상 메서드이며 변수는 static final 변수이다
- 메서드를 선언할 때 abstract 키워드를 붙이지 않아도 추상 메서드로 간주한다
- 변수에 static final을 붙이지 않아도 static final로 간주한다
인터페이스의 작성
interface 인터페이스 이름 {
변수 선언
메서드 선언
}
인터페이스의 구현
class 클래스 이름 extedns 부모 클래스 implements 인터페이스1, 인터페이스2 {
}
* 상속받을 클래스가 없을 경우 extends 부모 클래스는 생략
interface 만드는 방법
defaultpackage에서 interface 생성
InterfaceTest.java
--------------------------------------------------------------------------------------------------
TestCalss t = new TestClass( );
t.methodA( );
t.methodB( );
System.out.println(t.a);
System.out.println(t.b);
InterA ia = new TestClass( ):
InterB ib = new TestClass( );
ia.methodA( );
ib.methodB( );
System.out.println(InterA.a);
System.out.println(InterB.b);
class TestClass implements InterA, InterB {
@Override
public void methodA( ) {
// TODO Auto-generated method stub
System.out.println("InterA의 메서드");
}
@Override
public void methodB( ) {
// TODO Auto-generated method stub
System.out.println("InterB의 메서드");
}
class TestClass2 implements InterC{
public void methodc( ) {
}
@Override
public void methodA( ) {
// TODO Auto-generated method stub
}
}
--------------------------------------------------------------------------------------------------
Console
--------------------------------------------------------------------------------------------------
InterA의 메서드
InterB의 메서드
10
20
InterA의 메서드
InterB의 메서드
10
20
--------------------------------------------------------------------------------------------------
InterA.java
--------------------------------------------------------------------------------------------------
int a = 10;
public void methodA( );
--------------------------------------------------------------------------------------------------
InterB.java
--------------------------------------------------------------------------------------------------
int b = 20;
public void methodB( );
--------------------------------------------------------------------------------------------------
InterC.java
--------------------------------------------------------------------------------------------------
int c = 30;
public void methodC( );
--------------------------------------------------------------------------------------------------