on
[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