인터페이스의 개념
1. 완벽한 추상화를 제공!
- 인터페이스 내 모든 메소드는 추상메소드 : 본체 없음!
[public abstract] return-type method-name();
- 모든 변수는 상수
[final] data-type 변수명 = 상수값;
2. 프로젝트시 표준 규약을 제공하기 위한 목적으로 쓰임
3. 객체 생성 불가능 (메소드의 본체가 없으니까..)
- 다른 클래스 등에 상속 → 메소드 재정의 → 객체 생성 의 단계를 거친다!
4. 다중 상속 가능
cf. 일반 클래스를 상속할 때 :
class 자식클래스명 extends 부모클래스명{}
- 인터페이스를 상속할 때 :
class 자식클래스명 implement(구현하다) 인터클래스1, 인터클래스2, ..., 인터클래스n{}
5. 클래스의 모형을 가지지만 클래스는 아님!
- 선언 형식 :
interface 인터페이스명{}
인터페이스 예제
interface Inter{ // interface 인터페이스명 // 모든 멤버 사용 가능 : 추상메소드, 상수화된 변수 // 변수 -> 상수 final int NUM1 = 10; // 변수의 상수화 int NUM2 = 20; // final 안써도 상수화됨! // 메소드 -> 추상메소드 public abstract void display1(); // 추상메소드 선언하기 void display2(); // abstract 안 써도 추상메소드로 인식! } // 형식 : class 클래스명 implements 인터페이스명 class SubInter implements Inter{ // Error 발생 이유 : 추상 메소드 재정의 강제성 public void display1(){ // 추상메소드 재정의 System.out.println("display1"); } public void display2(){ // 두번째 추상메소드 재정의 System.out.println("nothing"); } } |