본문 바로가기
언어공부/JAVA&SPRING

[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 48회차 미션

by hobbiz 2020. 9. 26.
반응형

오늘은 인터페이스의 요소들에 대해 공부해 보았다.

 

 

 

 

인터페이스의 요소에는 아래와 같은 것들이 있다.

 

- 상수 : 선언된 모든 변수는 상수로 처리됨

- 메서드 : 모든 메서드는 추상 메서드

- 디폴트 메서드 : 기본 구현을 가지는 메서드. 구현하는 클래스에서 재정의 할 수 있음 (java 8)

- 정적 메서드 : 인스턴스 생성과 상관없이 인터페이스 타입으로 호출하는 메서드 (java 8)

- private 메서드 : 인터페이스 내에서 사용하기 위해 구현한 메서드. 구현하는 클래스에서 재정의 할 수 없음 (java 9)

 

 

여러 개의 인터페이스 구현하기

 

인터페이스는 구현 코드가 없으므로 하나의 클래스가 여러 인터페이스를 구현 할 수 있음

디폴트 메서드의 이름이 중복 되는 경우에는 재정의 함.

 

 

 

아래와 같이 인터페이스 구현과 클래스 상속을 함께 할 수 있다.

 

 

<추가공부>

인터페이스 (자바)

출처: ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_(%EC%9E%90%EB%B0%94)

 

인터페이스(interface)는 자바 프로그래밍 언어에서 클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다. 이들은 프로토콜과 비슷하다. 인터페이스는 interface라는 키워드를 사용하여 선언하며, 메소드 시그너처와 상수 선언(static final이 둘 다 선언되는 변수 선언)만을 포함할 수 있다. 자바 8 미만의 모든 버전을 기준으로 인터페이스의 모든 메소드는 구현체(메소드 바디)를 포함하고 있지 않다. 자바 8부터, default와 static 메소드는 interface 정의에 구현체를 가지고 있을 수 있다.

사용법

인터페이스 정의

인터페이스들은 다음의 구문을 사용하여 정의된다.

[visibility] interface InterfaceName [extends other interfaces] { constant declarations abstract method declarations }

예: public interface Interface1 extends Interface2;

인터페이스의 바디(body)는 추상 메소드를 포함하고 있지만 인터페이스 내의 모든 메소드들이 정의상 추상적이기 때문에 abstract 키워드가 필요하지 않다. 인터페이스는 노출된 행동들의 집합을 규정하므로 모든 메소드들은 암묵적으로 public이다.

그러므로 단순한 인터페이스는 다음과 같이 될 수 있다.

public interface Predator { boolean chasePrey(Prey p); void eatPrey(Prey p); }

클래스에서의 인터페이스 구현

인터페이스 구현 문법은 다음 공식을 사용한다:

... implements InterfaceName[, another interface, another, ...] ...

클래스는 인터페이스를 구현할 수 있다. 이를테면 다음과 같다.

public class Lion implements Predator { @Override public boolean chasePrey(Prey p) { // programming to chase prey p (specifically for a lion) } @Override public void eatPrey(Prey p) { // programming to eat prey p (specifically for a lion) } }

클래스가 인터페이스를 구현하면서 메소드를 모두 구현하지 않는다면, abstract로 표시되어야 한다. 클래스가 추상적이라면 서브클래스들 중 하나가 미구현 메소드를 구현할 것이라 예측한다. 추상 클래스의 서브클래스들 중 어느 것도 인터페이스 메소드를 모두 구현하지 않더라도 서브클래스 자체는 abstract로 다시 표시되어야 한다.

클래스들은 여러 인터페이스들을 구현할 수 있다.

public class Frog implements Predator, Prey { ... }

인터페이스들은 일반적으로 콜백을 목적으로 자바 언어에서 사용된다. 자바는 메소드(프로시저)를 인수(argument)로 전달하는 것을 허용하지 않는다.

서브인터페이스

인터페이스들은 아래와 같은 동일 공식을 사용하여 기타 여러 인터페이스들을 확장(extend)할 수 있다. 이를테면, 다음은

public interface VenomousPredator extends Predator, Venomous { //interface body }

유효한 문법이며 서브인터페이스를 정의한다.

 

 

 

패스트캠퍼스 강의: https://bit.ly/3ilMbIO

 

Java 웹 개발 마스터 올인원 패키지 Online. | 패스트캠퍼스

자바 기초문법부터 프로젝트 실습까지 Java 문법부터 스프링/스프링부트, 트렌디한 기술인 JPA까지 모두 배우는 온라인 강의입니다.

www.fastcampus.co.kr

 

반응형

댓글