Basic/Java

Java - 인터페이스(interface)

HappyWeasel 2019. 4. 15. 00:07

인터페이스란?

클래스와 달리 객체를 생성할 수는 없으며, 클래스에서 구현해야하는 작업 명세서이다.

 

인터페이스를 사용하는 이유?

 인터페이스를 사용하는 이유는 많지만, 가장 큰 이유는 객체가 다양한 자료형(타입)을 가질 수 있기 때문이다.

 

InterfaceA.java

public interface InterfaceA {
	public void funA();  //메소드를 정의하지 않는다.
}

 

InterfaceB.java

public interface InterfaceB {
	public void funB();  // 메소드를 정의하지 않는다.
}

 

Main.java

class interfaceClass implements InterfaceA, InterfaceB {  // implements 뒤에 인터페이스 나열한다.
	public interfaceClass() {
		System.out.println("ImplementClass constrator");
	}

	@Override
	public void funA() {          // 해당 인터페이스의 메소드를 정의한다.
		System.out.println(" -- funA() -- ");		
	}

	@Override
	public void funB() {
		System.out.println(" -- funB() -- ");		
	}
}

public class MainClass {
	public static void main(String[] args)
	{ 
		InterfaceA ia = new interfaceClass();  // 데이터 타입을 Interface로 불러온다.
		InterfaceB ib = new interfaceClass();
		
		ia.funA();
		ib.funB();
	}
}

 

 

예제

Toy.java

public interface Toy {
	public void walk();
	public void run();
	public void alarm();
	public void light();
}

 

ToyAirPlane.java

public class ToyAirPlane implements Toy {

	@Override
	public void walk() {
		System.out.println("The airplane can not walk");
		
	}

	@Override
	public void run() {
		System.out.println("The airplane can not run");
		
	}

	@Override
	public void alarm() {
		System.out.println("The airplane has alarm function");
		
	}

	@Override
	public void light() {
		System.out.println("The airplane has no light function");
	}	

}

 

ToyRobot

public class ToyRobot implements Toy {

	@Override
	public void walk() {
		System.out.println("The Robot can walk");
		
	}

	@Override
	public void run() {
		System.out.println("The Robot can run");
		
	}

	@Override
	public void alarm() {
		System.out.println("The Robot has no alarm function");
		
	}

	@Override
	public void light() {
		System.out.println("The Robot has light function");
	}	

}

 

Main.java

public class Main {
	public static void main(String[] args) {
		
		Toy robot = new ToyRobot();
		Toy airplane = new ToyAirPlane();
		
		Toy toys[] = {robot, airplane};
		
		for(int i=0 ; i < toys.length ; i++) {
			toys[i].walk();
			toys[i].run();
			toys[i].alarm();
			toys[i].light();
		}
	}
}