본문 바로가기

JAVA

Java 인터페이스

- 상수와 추상 메서드로만 이루어져 있다 + 디폴트 메소드, 정적 메소드 (자바 8부터) + 프라이빗 메소드(자바 9부터)

- 인터페이스에서 선언한 변수는 컴파일 시 상수로 변환된다 (public static final 예약어를 쓰지 않아도 쓴것과 동일)
- 인터페이스를 구현한 클래스가 어떤 기능의 메소드를 제공하는지를 명시

- 하나의 인터페이스는 여러개의 인터페이스를 상속받을 수 있다 

- 하나의 클래스는 여러개의 인터페이스를 구현하여 사용할 수 있다

   --> 클래스는 인터페이스가 각각 가지고 있는 모든 메소드를 구현해야함

 

public interface IA {

		int k = 10;
		int y = 20; 
		
		// 추상 메소드
		public abstract void pnr();
		void disp(); 
		
		//static 메소드
		public static void static_prn() {
			System.out.println("static_prn");
		}
		
		//default 메소드
		public default void default_prn() {
			System.out.println("default_prn");
		}
	}

interface IB{
		String test_prn(); 
}

변수 k 와 y는 컴파일 과정에서 상수로 변환된다. (public static final 한 것과 동일)

public abstract class My implements IA, IB{
	
	@Override
	public void pnr() {
		System.out.println("this is pnr");
	}

	@Override
	public void disp() {
		System.out.println("it's disp");
	}
}

IA 인터페이스의 pnr 메소드와 disp 메소드 구현. 

IB 인터페이스의 test_prn 메소드는 구현하지 않아 추상 클래스이다.

public class MyTest extends My{

	@Override
	public String test_prn() {
		String str = "test_prn";
		return str;
	}
	
	public static void main(String[] args) {
		System.out.println(k);
		System.out.println(y);
		
		My m = new MyTest();
		m.pnr();
		m.disp();
		
		System.out.println(m.test_prn());
	}
10
20
this is pnr
it's disp
test_prn

 

'JAVA' 카테고리의 다른 글

[JavaFX] Scene Builder 설치 및 설정  (0) 2021.08.14
Java 배열  (0) 2021.08.12
Java class 04 - 추상클래스  (0) 2021.08.09
Java class 03 - 상속  (0) 2021.08.05
JAVA 접근제한자 및 getter & setter  (0) 2021.08.04