[Java] 자바 인터페이스 다중 구현 클래스 알아보기! [Interface]

2021-01-06


인터페이스는 상속과는 달리 두 가지 인터페이스를 한 개의 클래스 내에 모두 구현할 수 있다. 오늘은 이와 같은 방법을 알아보도록 하자.


우선 아래 예제 인터페이스 두 가지 animal / human을 준비하였다.

package iInterface;

public interface animal {
	void species();
	void sex();
}

package iInterface;

public interface human {
	void name();
	void age();
}

큰 특징 없이 각 인터페이스별 추상 메서드를 2개씩 선언해 주었다. 이제 구현 클래스로 가서 구체적인 메서드 코드를 작성해보도록 하자.


package iInterface;

public class integrated implements human, animal {
	private String name;
	private int age;
	private String sex;
	private String species;
	
	public integrated(String name, int age, String species, String sex) {
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.species = species;
	}
	//생성자를 통해 각 인간의 정보와 동물의 정보를 부여받는다.
	
	// 휴먼 인터페이스 구현 부분
	@Override
	public void name() {
		System.out.println("저의 이름은 " + name + " 입니다.");
		
	}

	@Override
	public void age() {
		System.out.println("저의 나이는 " + age + " 입니다.");
		
	}
	
	// 동물 인터페이스 구현부분
	@Override
	public void species() {
		System.out.println("이 동물은 " + species + " 입니다.");
		
	}

	@Override
	public void sex() {
		System.out.println("이 동물은 " + sex + " 입니다.");
		
	}
	
}

클래스 선언부만 조금 다른데 implements뒤에 자신이 구현하고자 하는 인터페이스를 구분자 , 를 통해서 나열하여 코드를 작성해주면 된다. 이후 각 인터페이스별 추상 메서드의 내용을 구현해주면 된다.

(사실 처음에 말했듯이... 그냥 하나의 클래스의 원하는 인터페이스들을 구현해주면 된다.)


이후 메인클래스로 가서 방금 만든 구현 클래스를 실행해보도록 하자.

package iInterface;

public class main {

	public static void main(String[] args) {
		
		
		integrated it = new integrated("king", 25, "Lion", "수컷");
		//생성자로 데이터를 입력받는다.
		
		it.name();
		it.age();
		System.out.println("________________");
		System.out.println();
		it.species();
		it.sex();

	}

}

코드를 보면 단 하나의 it라는 객체가 생성된 것을 확인할 수 있으며, 생성자에 animal / human 모두의 매개값이 부여되는 것을 확인할 수 있다. 이후 해당 두 인터페이스를 단 하나의 클래스 변수로 접근할 수 있는 것을 확인 할 수 있으며, 실행시켜 보아도 컴파일 상에 오류없이 정상적으로 콘솔창에 생성자를 통해 입력된 데이터가 출력되는 것을 확인 할 수 있다.