인터페이스의 여러가지 요소
08 Sep 2021 -
1 minute read
-
상수
- 모든 변수는 상수로 변환됨 (public static final)
-
추상메서드
- 선언된 모든 메서드는 추상 메서드 (public abstract)
-
디폴트 메서드 (~자바 8)
-
구현을 가지는 메서드
-
인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드
-
추상메서드만 사용하면 구현하는 클래스마다 오버라이딩하며 같은 코드를 반복해서 써야할 수 있기 때문에 디폴트 메서드를 사용해 공통적인 부분을 사용하도록 함
-
default 키워드 사용
-
구현하는 클래스에서 재정의 가능
-
인터페이스를 구현한 클래스의 인스턴스가 생성(new)되어야 사용 가능
-
-
정적 메서드 (~자바 8)
- 인스턴스 생성과 관계 없이 인터페이스타입으로 사용 가능한 메서드
-
private 메서드 (~자바 9)
-
인터페이스를 구현한 클래스에서 사용하거나 재정의 할 수 없음
-
인터페이스 내부에서만 사용하기 위한 메서드
-
default메서드나 static메서드에서 사용
-
-
ex)
-
Calc.java (interface)
public interface Calc { //default method default void description() { System.out.println("정수의 사칙연산"); test(); } /*오버라이딩하지 않는다면 정수의 사칙연산 test method 출력됨*/ //static method static int total(int[] arr) { int total = 0; for (int num : arr) { total += num; } testStatic(); return total; } //private 메서드는 재정의 할 수 없음 private void test() { System.out.println("test method"); } private static void testStatic() { System.out.println("test static method"); } }
-
Div.java (implements Calc.java)
public class Div implements Calc { //재정의 @Override public void description() { System.out.println("Overriding"); } }
-
CalcMain.java (Main Class)
public class CalcMain { public static void main(String[] args) { Calc calc = new Div(); calc.description(); //오버라이딩한 내용 출력 int[] arr = {1, 2, 3, 4, 5}; System.out.println(Calc.total(arr)); } }
-
출력
Overriding test static method 15
-