Develop/JAVA

JAVA 인터페이스

roalwh 2023. 10. 17. 20:50

 

//인터페이스
//클래스와달리 객체를 생설항 수는 없으며 클래스에서 구현해야하는 작업명세서이다.
//인터페이스를 사용하는 이유는 ㄴ많지만 주된이유는 바로 객체가 다양한 자료형(타입)을 가질 수 있기 때문이다.
//MainClass.java
public class MainClass {

	public static void main(String [] args) {
		
		InterfaceA ia = new InterfaceClass();
		InterfaceB ib = new InterfaceClass();
		
		ia.funA();
		ib.funB();
		
		System.out.println();

		// Toy 인터페이스 예제
		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();
			
			System.out.println();
		}
		
	}
	
}
 
//implements --> 인터페이스를 구현 
//상속과달리 많은것을 사용가능, 다형성?
// InterfaceA, InterfaceB에서 선언만 해두었기때문에 InterfaceClass 에서 빨간줄이나온다.
//InterfaceClass.java
public class InterfaceClass  implements InterfaceA, InterfaceB {
//여기서 재구현을하여 빨간줄을 없엔다.전구로 자동으로 생성가능하고, 손으로 입력 해도 된다.
	
	public InterfaceClass() {
		System.out.println(" --- Inetfaceclass constructor --");
	}
	
	@Override
	public void funA() {	
		System.out.println(" --- Inetfaceclass constructor A--");
	}
		
	@Override
	public void funB() {
		System.out.println(" --- Inetfaceclass constructor B--");
	
	}



}
 
//class 대신 interface키워드를 사용한다. 생성시 interface 선택
//InterfaceA.java
public interface InterfaceA {
	//선언만해둠
	public void funA();
}
 
//class 대신 interface키워드를 사용한다. 생성시 interface 선택
//InterfaceB.java
public interface InterfaceB {
	//선언만해둠
	public void funB();
}
 

예제. Toy 인터페이스

//Toy 인터페이스 생성
//Toy.java
public interface Toy {
	
	public void walk();
	public void run();
	public void alarm();
	public void light();
}
 
//Toy 인터페이스
//ToyAirplane.java
public class ToyAirplane implements Toy {

	@Override
	public void walk() {
		System.out.println("The airplane can net 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.");
		
	}

}
 
//Toy 인터페이스
//ToyRobot.java
public class ToyRobot  implements Toy {

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

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

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

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

'Develop > JAVA' 카테고리의 다른 글

JAVA 람다식  (0) 2023.10.17
JAVA 추상클래스  (0) 2023.10.17
JAVA 내부(inner) 클래스와 익명(anonymous) 클래스  (0) 2023.10.17
JAVA 상속 특징  (0) 2023.10.17
JAVA 상속  (0) 2023.10.17