인터페이스의 다형성

2022. 4. 19. 20:27java/java

*다형성

  1)하나의 타입에 여러가지 객체를 대입해서 다양한 실행 결과를 얻는 것을 말한다.

  2)다형성을 구현하는 기술

    -상속 또는 인터페이스의 자동 타입 변환

    -오버라이딩

  3)다형성의 효과

    -다양한 실행 결과를 얻을 수 있다.

    -객체를 부품화시킬 수 있어 유지보수가 용이하다.

 

*인터페이스를 이용한 다형성 개념

  1)인터페이스는 매개변수 타입으로 자주 등장한다.

     -메소드 호출시 매개값으로 여러가지 종류의 구현 객체를 대입할 수 있어 메소드 실행 결과가 다양하게 나온다.

예)

useRemoteControl(new Television);
useRemoteControl(new Audio);

 

*필드의 다형성

 

public class car {
    Tire frontLeftTire = new HankookTire();
    Tire frontRighttTire = new HankookTire();
    Tire backLeftTire = new HankookTire();
    Tire backRigthtTire = new HankookTire();
    
    void run() {
    	frontLeftTire.roll();
        frontRighttTire.roll();
        backLeftTire.roll(); 
        backRigthtTire.roll();
    }
}


Car myCar = new Car();
myCar.frontLeftTire = new KumhoTire();     //타이어 인터페이스 클래스로부터 구현을 명령받은 금호타이어 객체
myCar.frontRighttTire = new KumhoTire();


myCar.run();

*매개변수의 다형성

public interface Vehicle {          //인터페이스 클래스
	public void run(); 
}

public class Taxi implements Vehicle{		//인터페이스 run 메서드를 구현한 Taxi 클래스

	@Override
	public void run() {
		System.out.println("택시가 달립니다.");
	}
	
}

public class Bus implements Vehicle{		//인터페이스 run 메서드를 구현한 Bus 클래스

	@Override
	public void run() {
		System.out.println("버스가 달립니다.");
	}
	
}


public class Driver {

	public void drive(Vehicle vehicle) {		//인터페이스 클래스 Vehicle을 
		vehicle.run();							//매개변수로 받는 Driver 클래스
	}
}

public class DriverExample {					//메인 클래스

	public static void main(String[] args) {
		Driver driver = new Driver();
		
		Bus bus   = new Bus();
		Taxi taxi = new Taxi();
		
		driver.drive(bus);
		driver.drive(taxi);
	}

}

'java > java' 카테고리의 다른 글

디폴트 메소드와 인터페이스 확장  (0) 2022.04.19
인터페이스 상속  (0) 2022.04.19
인터페이스 구현(2)  (0) 2022.04.15
인터페이스 구현(1)  (0) 2022.04.15
인터페이스 선언  (0) 2022.04.14