라벨이 Polymorphism인 게시물 표시

[JAVA] 다형성(Polymorphism)

이미지
JAVA 다형성(Polymorphism) 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. 즉 다형성이란 동일한 조작방법으로 동작시키지만 동작방법은 다른것을 의미한다. overloading과 다형성 다형성의 쉬운 예로 오버로딩이 있다.  오버로딩은 같은 의미이지만 매개변수가 어떤 형태이고 어떤데이터 타입이냐에 따라서 다른 메서드가 호출되는 방식이다. 즉 같은 이름, 다른 동작방법이라고 볼 수 있기때문에 이것또한 다형성이다. 클래스와 다형성 아래의 코드를 보면 c1과 c2의 인스턴스 데이터타입이 상속받은 부모 클래스인것을 볼 수 있다.  이렇게 작성한 이유는 코드의 중복을 회피하면서도 각각의 인스턴스마다 서로 다른 원하는 결과값을 얻기 위해서이다. 각 인스턴스는 상속받은 상위클래스를 데이터타입으로 정의함으로서  상위클래스에 정의되어있는 setOprands메서드로 인자값을 전달하여 left와 rigth의 값을 초기화하고  각 인스턴스마다 선언된 다른 클래스 즉 각각의 상속받은 하위클래스를 호출하여 서로 다른 원하는 결과값을 출력하도록한다.  상위클래스에서 run메서드로 추상메서드를 호출하고 이렇게 호출된 추상메서드는 상위클래스를 상속받은  각각의 하위클래스에서 오버라이딩을 통해 추상메서드를 구현하여 서로 다른 원하는 결과 값을 출력할 수 있다. 이렇게 작성하는것이 제일 간단하지만 각각의 인스턴스마다 다른 데이터타입을 가지고 있다하더라도  excute메서드에 각각의 데이터타입으로 매개변수를 작성하여 인스턴스의 각각의 데이터를 전달해도 결과값을 동일하게 얻을 수 있다. 하지만 그렇게되면 코드의 중복이 발생하므로 위와같이 작성하는것이 좋을것같다. 인터페이스의 다형성 한 클래스가 여러개의 인터페이스를 상속받는다는것은 상속받은 클래스에서 인터페이스가 구현하는 기능을 모두 사용할 수 있다는것이다. 하지만 모든 기능을 사용하지않고 인터페이스로 구현된 기능중 어떠한 특정 기능만 사용하고자한다면 혹은 해당 기능만 사용하도록 제한하고자