Test115 인터페이스(Interface) 정의 / 『extends』 vs 『implements』 쓰이는 영역 정의
※ 『extends』 vs 『implements』
클래스 extends 클래스
클래스 extends 추상클래스
인터페이스 extends 인터페이스
인터페이스 extends 인터페이스, 인터페이스
추상클래스 implements 인터페이스
추상클래스 implements 인터페이스, 인터페이스
클래스 implements 인터페이스
클래스 implements 인터페이스, 인터페이스
※ 인터페이스는 클래스와는 달리 다중 상속이 가능하며, 인터페이스 자체도 상속된다.
※ 인터페이스의 멤버 변수인 데이터는 접근제어지시자를 명싱하지 않아도 기본 상수(primitive constant)인 static final 의 변경자로 설정된다.
클래스에서 인터페이스를 추가하여 사용할 경우 인터페이스 안에서 정의된 모든 메소드를 구현해 주어야 하며
인터페이스를 구현하는 클래스는 인터페이스의 상위 인터페이스가 제공하는 추상 메소드를 포함한
모든 메소드를 구현하지 않을 경우 추상(abstract) 클래스로 선언해야 한다.
※ 형식
- 인터페이스는 메소드를 선언만 하고 정의는 없다.
- 인터페이스를 implements 할 경우 반드시 하위 클래스는
인터페이스의 모든 메소드를 오버라이딩(Overriding)해야 한다.
- 인터페이스는 자동적으로 다음과 같이 처리된다.
├ 멤버변수 : public static final
└ 메소드 : public abstract
- 다중 상속은 콤마『,』로 구분되며 여러 개의 인터페이스를 상속할 수 있다.
- 인터페이스끼리 상속할 경우는 『extends』 키워드를 사용한다.
※ 인터페이스의 선언
인터페이스는 클래스의 내부 구현을 제외한 참조형만 선언한 것이므로 메소드를 선언만 하고 정의는 할 수 없다.
또한 클래스에서의 변수는 값이 변할 수 있지만 인터페이스에서의 변수는 상수처럼 값이 바뀔 수 없기 때문에
선언 시에 미리 값을 할당해 놓아야 한다.
※ 인터페이스의 구현
인터페이스는 클래스를 위한 템플릿이기 때문에, 사용 가능한 인터페이스가 되기 위해서는 자바 프로그램에서
인터페이스를 구현해 주어야 하는데 이러한 기능을 하는 것이 『implements』 예약어이다.
※ 클래스는 동시에 두 개 이상의 인터페이스를 implements 할 수 있다. (다중 상속 지원)
// 인터페이스
ADemo.java
interface ADemo
{
public void write();
}
// 인터페이스
BDemo.java
interface BDemo
{
public void print();
}
// 두 인터페이스(ADemo, BDemo)를 상속받은 인터페이스
CDemo .java
interface CDemo extends ADemo, BDemo
{
// public void write();
// public void print();
public void test();
}
// 두 인터페이스를 상속받은 인터페이스를 구현한 추상 클래스
DemoImpl .java
class DemoImpl implements CDemo
{
@Override
public void test()
{
System.out.println("test()...");
}
@Override
public void write()
{
System.out.println("write()...");
}
@Override
public void print()
{
System.out.println("print()...");
}
}
// main() 메소드를 포함하고 있는 외부 클래스
Test115.java
public class Test115
{
public static void main(String[] args)
{
// 두 인터페이스를 상속받은 인터페이스를 구현하고
// 모든 메소드를 재정의한 클래스에 대한 인스턴스 생성
DemoImpl ob = new DemoImpl();
ob.print();
ob.write();
ob.test();
}
}
cmd
print()...
write()...
test()...
계속하려면 아무 키나 누르십시오 . . .
'Study Note > Java' 카테고리의 다른 글
JAVA_ Test117_ 중첩 클래스 종류 / static 중첩 클래스 / 내부 클래스 / 지역 클래스 / 무명 클래스 (0) | 2018.06.16 |
---|---|
JAVA_ Test116_ 인터페이스(Interface) / 인터페이스를 활용하여 성적 처리 프로그램을 구현 (0) | 2018.06.16 |
JAVA_ Test114_ 인터페이스(Interface) 정의 (0) | 2018.06.16 |
JAVA_ Test113_ 인터페이스(Interface) 정의 (0) | 2018.06.16 |
JAVA_ Test112_ 인터페이스(Interface) 정의 (0) | 2018.06.15 |
댓글