Java 인터페이스(interface)

jooog·2021년 9월 28일
0

인터페이스란 개발 코드와 객체간의 접점을 의미하는데 추상 메서드의 집합이라고 볼 수있다.

자바 8부터는 디폴트 메소드와 정적 메소드도 추가되었다

추상메서드는 메서드 선언부만 있고 실행문이 없는 메소드를 의미한다

interface 인터페이스이름 {
	public static final 상수이름 = 값;
    	public abstract 메서드이름();
}

인터페이스 이름

첫자는 대문자로 작성해야 하고 숫자로 시작할 수 없다.

$나 _로 시작하는 것은 가능하나 다른 특수문자는 사용할 수 없다

인터페이스에는 상수만 선언할 수 있고 모두 public으로만 선언해야 한다.

interface InterfaceName {
	
	public static final int AGE = 5;
	final int GRADE = 7;
	static int POINT = 100;
	int NUMBER = 5;
	//상수
	
	
	public abstract String getName();
	String className(); //public abstract 생략
    default 타입 메소드명(){}
    static 타입 메소드명(){}
	
}

위의 코드처럼 interface 내에서는 상수추상 메서드만 호출할 수 있으며 상수의 경우에는 static final을 추상 메서드의 경우에는 public abstract를 생략할 수 있다

default메서드와 static 메서드

    default 타입 메서드명(){}
    static 타입 메서드명(){}

인터페이스 내에는 default 메서드static 메서드도 선언할 수 있는데 이 경우에는 메서드 실행블록까지 포함해서 사용할 수 있다

인터페이스의 상속(Inheritance)

인터페이스도 상속이 가능하다

하지만 일반적인 객체를 상속받는 것과는 차이가 있는데 인터페이스만 상속할 수 있으며 다중 상속이 가능하다는 점이다.

interface Practice extends Exam, Name{}

즉, 하위 인터페이스에서 상위 인터페이스를 상속하는 것이다

인터페이스의 구현

keyword : implements

인터페이스에 정의된 추상메소드를 완성하는 방법

추상클래스의 경우에는 extends 상속을 통해 구현되는 반면 인터페이스는 implements를 사용해서 구현한다

class ClassName implements InterfaceName {
	
    public void name() {}
    public void grade() {}
}

인터페이스 내의 추상메서드를 완성하는 것을 인터페이스를 구현한다고 표현한다

abstract class ClassName implements InterfaceName {
	
    public void name() {}
   // public void grade() {}
}

인터페이스에서 추상 메소드 중 일부만 구현하는 경우에는 class 앞에 abstract를 붙여주어야 한다

0개의 댓글