[Java] 자바 #25, 인터페이스(Interface)

인터페이스, interface

- 자바의 구성요소.

- 클래스의 일종(자료형)

- 추상클래스와 유사.

- 추상메소드의 집합.

- 상속관계에서 부모역할.

- 구현멤버는 가질 수 없다.

일반클래스 => 변수 + 메소드

추상클래스 => 변수 + 메소드 + 추상메소드

인터페이스 => 추상메소드


ex) 

class 일반클래스명{

  변수

  메소드 

 }

 

 class 추상클래스명{

  구현멤버

  변수

  메소드

 

  추상멤버

  추상메소드();

 }

 

 interface 인터페이스명{

  추상멤버

  추상메소드();

 }


상속

일반클래스 > 일반클래스 : extends

일반클래스 > 추상클래스 : extends

일반클래스 가 인터페이스 를 (구현) : implements

인터페이스 가 인터페이스 를 상속 : extends


인터페이스 구현 예제


//스피커 인터페이스 선언.

interface Speaker{

//구현된 멤버 불가능

//추상메소드

public abstract void aaa();

abstract void bbb(); //public 접근제한자만 가진다.

void ccc(); //어차피 추상메소드만 가지므로 abstract를 생략가능하다.

}

//구현 클래스(스피커 기종 Boss1000인 것 구현)

class Boss1000 implements Speaker{


@Override

public void aaa() {

}


@Override

public void bbb() {

}


@Override

public void ccc() {

}

}


상속

- 상속의 구성원이 될 수 있는 요소


일반클래스, 추상클래스, 인터페이스 간의 상속관계

1. 일반 클래스(자식) , 일반클래스(부모) O

2. 일반클래스(자식) , 추상클래스(부모) O

3. 일반클래스(자식) , 인터페이스(부모) O

4. 추상클래스(자식) , 일반클래스(부모) O -> 쓰지마세요 문법은 지원될지 몰라도 이치가 맞지 않다.

5. 인터페이스(자식) , 일반클래스(부모) X 이유 : 일반클래스의 구현된 멤버를 인터페이스가 상속받을 수 없기 때문에~(쉽게 생각)

6. 추상클래스(자식) , 인터페이스(부모) O

7. 추상클래스(자식) , 추상클래스(부모) O

8. 인터페이스(자식) , 추상클래스(부모) X -> 5번이랑 이유가 같음.

9. 인터페이스(자식) , 인터페이스(부모)

10. 일반클래스(자식)->일반클래스 -> 추상클래스 -> 추상클래스 -> 인터페이스 -> 인터페이스 -> 인터페이스 //패턴 최상위 계층은 인터페이스 


다중상속

- 자바는 클래스상속에서 다중상속은 허용하지 않는다.

- 인터페이스에 한해서는 다중상속을 허용한다.(*******************)

ex)

- 인터페이스

interface 사람{

void 숨쉰다();

}

interface 남자 extends 사람{

void 군대간다();

}

interface 여자 extends 사람{

void 화장한다();

}

interface 부장 extends 사람,직원{

void 결재한다();

}

interface 직원 extends 사람{

void 일한다();

}

interface 엄마 extends 여자{

void 밥한다();

}

interface 아빠 extends 남자{

void 빨래한다();

}


- 구현 클래스

class 홍길동 implements 남자,직원,아빠{

@Override

public void 숨쉰다() { }

@Override

public void 빨래한다() { }

@Override

public void 일한다() { }

@Override

public void 군대간다() { }

}

댓글

Designed by JB FACTORY