본문 바로가기
Java/기초

[java기초] 인터페이스

by Meaning_ 2021. 6. 30.
728x90
반응형

<인터페이스의 장점>

- 인터페이스만 준수하면 통합에 신경쓰지 않고, 다양한 형태로 새로운 클래스 개발 가능

- 클래스의 다중 상속 지원하지 않지만, 인터페이스로 다중 상속효과를 간접적으로 얻을 수 있다. 

 

<인터페이스 vs 추상클래스>

분류 인터페이스 추상클래스
구현 메서드 포함불가(단, 디폴트 메서드와 정적메서드는 예외) 포함가능
인스턴스 변수 포함 불가능 포함가능
다중상속 가능 불가능
디폴트 메서드 선언 가능 선언 불가능
생성자와 main() 선언 불가능 선언 가능
상속에서의 부모 인터페이스 인터페이스,추상 클래스
접근 범위 모든 멤버를 공개 추상메서드를 최소한 자식에게 공개 

인터페이스는 인스턴스 생성 불가능, 생성자도 당연히 없음!

 

<인터페이스 구조>

 

interface 인터페이스 이름{

   //상수이름

   //abstract 메서드

  //default 메서드

  //static 메서드

  //private 메서드

}

 

인터페이스의 모든 필드

 

public static final을 포함

 

<default 메서드>

 

default 반환타입 디폴트 메서드 이름(){}

- 인터페이스 사용하려면 인터페이스 구현한 클래스 작성해야함.

- 기존 인터페이스에 새로운 기능 추가할 수 있도록 디폴트 메서드 사용가능

- 디폴트 메서드 사용하면 기존의 메서드 변경하지 않아도 자유롭게 수정 가능(기존에는 인터페이스의 수정사항이 생기면 모든 인터페이스를 일일이 수정했어야)

- 인터페이스를 구현하는 클래스에 자동 상속

- public 접근지정만 허용, 생략가능하다. 

- 오버라이딩 될 수 있다(정적메서드는 불가능)

 

==> 정리하자면 원래 인터페이스는 메서드 구현을 못하는데, default 메서드만 메서드내부 구현이 가능하다는거!

 

<인터페이스 상속>

 

- extends 키워드 (인터페이스 상속)

 

interface 자식인터페이스 extends 부모인터페이스{}

interface 자식 인터페이스 ecxtedns 부모 인터페이스1, 부모 인터페이스2{}

 

- implements 키워드 (인터페이스 구현)

 

class 자식클래스 implements 부모 인터페이스{}

class 자식 클래스 implements 부모 인터페이스1,부모 인터페이스2{}

 

인터페이스 다중상속

 

class 자식클래스 extends 부모클래스 implements 부모 인터페이스 1, 부모 인터페이스2{}

 

<인터페이스에서 defualut 메소드와 static 메소드>

 

default 메소드 static메소드
- 인터페이스에서 메소드 구현 가능
- 참조변수로 함수 호출 가능
- 오버라이딩 가능
- 인터페이스에서 메소드 구현 가능
- 반드시 클래스 명으로 메소드 호출해야
- 오버라이딩 불가능

 

<인터페이스 타입>

 

- 인터페이스도 클래스처럼 하나의 타입이므로 변수를 인터페이스 타입으로 선언 가능

- 인터페이스의 구현 클래스는 그 인터페이스의 자식 타입

 

인터페이스타입 변수 = 구현객체

 

- 인터페이스 타입변수가 구현 객체를 참조한다면 강제 타입변환 가능

 

구현클래스 타입 변수=(구현 클래스 타입) 인터페이스타입 변수 

 

인터페이스 타입 변수--> 인터페이스 구현 객체를 참조하는 변수 

 

<인터페이스 응용 예제>

 

 

Controllable.reset()이 가능한건 인터페이스는 객체를 생성하지 않기 때문

728x90
반응형

'Java > 기초' 카테고리의 다른 글

[java기초] 패키지  (0) 2021.07.02
[java 기초] 인터페이스와 다형성  (0) 2021.06.30
[java기초] 추상 메서드  (0) 2021.06.30
[java 기초] 타입변환과 다형성  (0) 2021.06.30
[java기초] final 메서드  (0) 2021.06.30

댓글