day19_InterfaceTest17

육희영·2021년 11월 1일
0
package com.java1.day19;

//제3의 클래스를 통해서 인터페이스를 구현한 클래스를 제공받을수 있다.
//JDBC의 DriverManager클래스가 이런 방식으로 되어있다.

public class InterfaceTest17 {
	public static void main(String[] args) {
		A3 a = new A3();
		a.methodA();
	}
}

class A3{
	void methodA() {
		//제3의 클래스의 메서드를 통해서 인터페이스 I3를 구현한 클래스의 인스턴스를 얻어온다.
		I3 i = InstanceManager.getInsance();
		i.methodB();
		System.out.println(i.toString()); //i로 Object클래스의 메서드 호출가능
	}
}
interface I3{
	public abstract void methodB();
}
class B3 implements I3{
	@Override
	public void methodB() {
		System.out.println("methodB in B3 class");
		
	}
	@Override
	public String toString() {
		return "classB3";
		
	}
	
}

class InstanceManager{
	//리턴 타입이 I3 이면 인터페이스 I3을 리턴하는것이 아닌 I3을 구현한 클래스를 리턴 한다는 뜻이다.
	public static I3 getInsance() {
		return new B3();	//다른 인터페이스로 바꾸려면 여기만 변경하면 됨.
	}
	
}

출력결과

methodB in B3 class
classB3

0개의 댓글

관련 채용 정보