Archives
Recent Posts
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[7일차 Java] Interface(인터페이스) 본문

Computer/Java

[7일차 Java] Interface(인터페이스)

Wise-99 2023. 5. 6. 22:47

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 Interface란?

  • 추상 메서드만 가지고 있는 요소로 인터페이스에 정의한 메서드는 추상 메서드이다.
  • 인터페이스에 정의한 변수는 static final 변수이다.
  • 자바에서 클래스는 하나의 클래스만 상속받을 수 있다.
  • 여러 타입의 변수에 담을 수 있도록 사용하는 것이 Interface이다.
  • 하나의 클래스는 다수의 Interface를 구현할 수 있다.

📖 예제 코드

interface TestInterface2 {
	public void testMethod2();
}

interface TestInterface1 {
	int a1 = 100;

	public void testMethod1();

	// 인터페이스에 static 메서드를 정의할 수 있다.
	public static void testMethod100() {
		System.out.println("testMethod100");
	}
}

// 인터페이스를 구현한 클래스
class TestClass1 implements TestInterface1, TestInterface2 {

	@Override
	public void testMethod1() {
		System.out.println("TestClass1의 testMethod1");
		System.out.printf("a1 : %d\n", a1);
	}

	@Override
	public void testMethod2() {
		System.out.println("TestClass1의 testMethod2");

	}
}

📖 인터페이스의 인터페이스 상속

  • 다중 상속이 아니다.
  • 자주 구현해야 하는 인터페이스들이 많을 경우, 하나의 인터페이스에 모두 상속 시키고 상속받은 인터페이스 하나만 클래스에 구현하면 편하게 사용할 수 있다.

📖 예제 코드

interface Inter1 {
	public void inter1Method();
}

interface Inter2 {
	public void inter2Method();
}

interface Inter3 {
	public void inter3Method();
}

class TestClass100 {

	public void testMethod1(Inter1 inter1) {
		inter1.inter1Method();
	}

	public void testMethod2(Inter2 inter2) {
		inter2.inter2Method();
	}

	public void testMethod3(Inter3 inter3) {
		inter3.inter3Method();
	}
}

class TestClass200 implements Inter1, Inter2, Inter3 {

	@Override
	public void inter3Method() {
		// TODO Auto-generated method stub
		System.out.println("TestClass200의 inter3Method");
	}

	@Override
	public void inter2Method() {

		System.out.println("TestClass200의 inter2Method");
	}

	@Override
	public void inter1Method() {

		System.out.println("TestClass200의 inter1Method");
	}

}

// 인터페이스의 인터페이스 상속
interface Inter4 extends Inter1, Inter2, Inter3 {

	public void inter4Method();
}

class TestClass400 implements Inter4 {

	@Override
	public void inter1Method() {

	}

	@Override
	public void inter2Method() {

	}

	@Override
	public void inter3Method() {

	}

	@Override
	public void inter4Method() {

	}
}

📖 dafault 메서드

  • Java 버전에 따라서 안될 수도 있다.(Java 8부터 가능)
  • 인터페이스에 있는 default 메서드는 클래스에 있는 메서드와 동일하게 동작한다.
  • static이 아니기 때문에 인터페이스를 구현한 클래스의 객체를 통해 이 메서드를 호출할 수 있다.
  • 메서드만 default로 정의할 수 있기 때문에 변수에 대해 default 메서드처럼 작업할 수 없다.
interface Inter500 {
	// default 메서드
	public default void defaultMethod() {
		System.out.println("default Method");
	}

}

// Inter500을 구현한 클래스
class TestClass500 implements Inter500 {

}

'Computer > Java' 카테고리의 다른 글

[8일차 Java] 예외처리(Exception)  (0) 2023.05.06
[8일차 Java] Thread  (0) 2023.05.06
[7일차 Java] Abstract  (2) 2023.05.06
[7일차 Java] 중첩 클래스  (0) 2023.05.06
[7일차 Java] final  (0) 2023.05.06