Java/java

4주차 - 상속 inheritance (5), 인터페이스 interface

우젼 2022. 9. 3. 14:35

실제 현업에서 코드는 여럿이서 함께 작성하게 된다.

이때에 정해진 규칙, 규격이 없이 무작정 시작하게 된다면 각자 서로 다른 코드를 작성하게 될것이다.

그렇기 때문에 하나의 규격을 정하는 것이 바로 interface 이다.

 

interface는 실제로 기능을 하는 것이 아니기 때문에 클래스가 아니다.

일반적으로 클래스의 생성시에는 public class 클래스 이름{} 이 되지만

인터페이스의 생성은 public interface 인터페이스 이름{} 이 된다.

클래스와 인터페이스는 서로 다른 것임을 했갈리지 말자.

 

아래는 인터페이스의 생성

public interface Parent {
	void method02();
	void method03();
}

인터페이스의 규격을 이용하기 위해서는 implements 라는 문구를 이용해야한다.

아래는 인터페이스를 사용하는 클래스의 예시 1

public class Child1 implements Parent{
	
	public void method02() {
		System.out.println("Child1 method02");
	}
	public void method03() {
		System.out.println("Child1 method03");
	}
}

예시 2

public class Child2 implements Parent{
	public void method02() {
		System.out.println("Child2 method02");
	}
	public void method03() {
		System.out.println("Child2 method03");
	}
}

메인 클래스

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Main {

	public static void main(String[] args) {
		List<String> list1 = new ArrayList<>();
		List<String> list2 = new LinkedList<>();
		
		list1.add("ArrayList");
		list2.add("LinkedList");
	
		Parent p1 = new Child1();
		Parent p2 = new Child2();
		
		p1.method02();
		p2.method02();
		
		p1.method03();
		p2.method03();

		parentPrint(new Child1()); // Parent p = new Child1
		parentPrint(new Child2()); // Parent p = new Child2
		
		listPrint(list1); // list = list1, list1 의 데이터 "ArrayList"
		listPrint(list2); // list = list2, list2 의 데이터 "LinkedList"
		
	}

	public static void parentPrint(Parent p) {
		System.out.println("\nparentPrint");
		p.method02();
		p.method03();
	}
	public static void listPrint(List list) {
		System.out.println("\nlistPrint");
		System.out.println(list.get(0));
	}
}