[Java-Live-Study] 8주차 - 인터페이스

[Java-Live-Study] 8주차 - 인터페이스

목표

자바의 인터페이스에 대해 학습하세요.

학습할 것 (필수)

인터페이스 정의하는 방법

인터페이스 구현하는 방법

인터페이스 레퍼런스를 통해 구현체를 사용하는 방법

인터페이스 상속

인터페이스의 기본 메소드 (Default Method), 자바 8

인터페이스의 static 메소드, 자바 8

인터페이스의 private 메소드, 자바 9

1. 인터페이스란?

인터페이스란 일종의 추상클래스이며, 추상클래스보다 추상화의 정도가 더 높다.

추상클래스는 추상메서드 이외에도 구현부가 있는 일반메서드나, 변수를 사용할 수 있는 반면, 인터페이스는 오직 추상메서드와, 상수만을 가질 수 있다.

2. 인터페이스 정의하는 방법

interface hello { public static final 타입 상수 = 값; // 추상 메소드 public abstract 메서드(매개변수); // 디폴트 메소드 defalut 타입 메소드명(매개변수){} // 정적 메소드 static 타입 메소드명(매개변수){} }

클래스를 정의할 때 class 대신 interface 사용

모든 변수는 public static final 이 붙어야하며, 생략 시 컴파일러가 자동으로 추가

모든 메서드는 public abstract이 붙어야하며, 생략이 가능하다. JAVA 8에서 추가된 메소드로 defalut, static 메소드는 구현부가 있어야한다.

3. 인터페이스 구현하는 방법

public interface Animal { public void cry(); } public class Cat implements Animal { @Override public void cry() { System.out.println("야옹"); } } public class Dog implements Animal { @Override public void cry() { System.out.println("멍멍"); } }

추상클래스는 클래스를 확장한다는 의미의 extends 키워드를 통해 구현 반면 인터페이스는 implements 키워드 사용

4. 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법

public class Main { public static void main(String[] args) { Cat cat = new Cat(); Dog dog = new Dog(); dog.cry(); //출력 : 멍멍 cat.cry(); //출력 : 야옹 } }

위의 코드와 같이 참고하시면 됩니다.

dog 클래스와 cat 클래스 각각 구현한 내용이 다르므로 출력되는 값도 다르게 표출 됩니다.

5. 인터페이스 상속

public interface Animal{ public abstract void cry(); } public interface person { public abstract void man(); } public class everyone implements Animal,person { @Override public void cry() { System.out.println("동물울음~~~"); } @Override public void man() { System.out.println("남자~~~~"); } }

JAVA는 다중상속이 불가하지만, 인터페이스는 다중상속이 가능합니다.

6. 인터페이스의 기본 메소드 (Default Method), 자바 8

public interface DefaultInterface { void use(); // 추상메서드 public default void using() { System.out.println("Default Method 실행"); } }

인터페이스는 Method 정의만 할 수 있고 구현은 할 수 없었지만, 이를 보완하기 위해 기본 메소드가 생기면서 구현내용도 포함할 수 있습니다.

7. 인터페이스의 static 메소드, 자바 8

public interface Animal { public static void cry(){ System.out.println("static Method start"); }; } public static void main(String[] args) { Animal.cry(); // 출력 : static Method start }

인터페이스에서 Method 구현이 가능하며, 반드시 클래스명으로 메소드를 호출

재정의 불가능

8. 인터페이스의 private 메소드, 자바 9

private Method를 default Method에서 호출하여 사용할 수 있습니다.

private Method에 static 키워드를 사용할 경우, static Method에서 호출이 가능합니다.

from http://changhyunit.tistory.com/98 by ccl(A) rewrite - 2021-11-02 14:26:53