자바 다형성 예제

이 섹션에서는 Java에서 재정의 된 메서드의 동작을 사용하여 클래스를 디자인 할 때 다형성을 활용하는 방법을 보여 드리고자합니다. 당신은 우리가 모든 하위 클래스 사운드 ()에 대한 일반적인 작업을 가지고 있지만 있지만 동일한 작업을 수행하는 다른 방법이 있었다 것을 알 수 있듯이. 이것은 다형성의 완벽한 예입니다 (우리가 다른 방법으로 하나의 작업을 수행 할 수있는 기능). 각 Animal이 다른 사운드를 가지고 있기 때문에 일반 sound() 메서드를 호출하는 것은 의미가 없습니다. 따라서 이 메서드가 수행하는 작업은 개체 유형에 따라 수행된다는 것을 말할 수 있습니다. Java에서 정적 다형성은 메서드 오버로드를 통해 수행됩니다. 메서드 오버로드는 이름이 같지만 매개 변수의 형식/순서/번호가 다른 클래스에 여러 메서드가 있음을 의미합니다. sir / 마담 나는 다형성 1의 자바 프로그램 두 가지 유형이 필요합니다. 컴파일 시간 메서드 오버로드 및 생성자 오버로드 2. 런타임 메서드 재정의 긴급 한 upcasting 및 늦은 바인딩 측면에서 하위 유형 다형성을 보여 주는 응용 프로그램을 만들었습니다. 이 응용 프로그램은 모양, 원, 사각형 및 모양 클래스로 구성되며 각 클래스는 자체 소스 파일에 저장됩니다.

목록 1은 처음 세 클래스를 제공합니다. 다형성 및 메서드 오버로드 및 재정의 유형은 별도의 자습서에서 다룹니다. 자바에서 1. 메서드 오버로드 – 이것은 컴파일 시간 (또는 정적 다형성) 2의 예입니다. Java에서 메서드 재정의 – 런타임(또는 동적 다형성) 3의 예입니다. 다형성의 유형 – 런타임 및 컴파일 시간 – 이것은 우리가 자세히 다형성의 유형을 다룬 우리의 다음 튜토리얼입니다. 이 주제를 통과하기 전에 메서드 오버로드 및 재정의를 하는 것이 좋습니다. 하나 이상의 IS-A 테스트를 통과하는 Java의 개체는 본질적으로 다형성이며 개체가 여러 형태를 취할 수 있는 기능입니다. OOP에서 다형성의 가장 일반적인 사용은 부모 클래스 참조가 자식 클래스 개체를 참조하는 데 사용될 때 발생합니다. “종종 객체 지향 프로그래밍의 맥락에서 단순히 다형성이라고 하는 하위 유형 다형성은 변수, 함수 또는 둘 이상의 형태를 가지고 있는 객체를 만드는 기능입니다.” – 위키백과 자바스크립트는 오픈 소스이며 가장 인기 있는 모든 지원 클라이언트 측 스크립팅 언어… 컴파일 시 Java는 메서드 서명을 확인하여 호출할 메서드를 알고 있습니다.

따라서 컴파일 시간 다형성 또는 정적 바인딩이라고합니다. 개념은 다음 예제에서 명확합니다: 늦은 바인딩은 [i].draw()에 의해 입증됩니다. 식. 0이면 컴파일러에서 생성된 명령으로 Circle의 draw() 메서드가 호출됩니다. 그러나 1과 같으면 이 명령으로 인해 사각형의 draw() 메서드가 호출됩니다. 이것은 아류형 다형성의 본질입니다. 다형성의 개념은 많은 개발자와 마찬가지로 강제 변환 및 오버로드를 임시 다형성으로 분류하고 파라메트릭 및 하위 유형을 보편적 다형성으로 분류하는 방법에만 적용할 수 있습니다. 귀중한 기술이지만, 나는 강요와 과부하가 진정한 다형성이라고 생각하지 않는다. 그들은 더 유형 변환 및 구문 설탕처럼. 메서드는 데이터 멤버가 아니라 재정의되므로 데이터 멤버가 런타임 다형성을 수행할 수 없습니다. 다형성은 작용하는 개체에 따라 다른 작업을 수행하는 메서드의 기능입니다. 즉, 다형성을 사용하면 하나의 인터페이스를 정의하고 여러 구현을 가질 수 있습니다.

위의 예제에서 보았듯이 메서드 sound()를 정의하고 다른 2 하위 클래스에서 여러 구현을 수행했습니다. 위의 예제는 런타임 다형성 예제이므로 런타임에 어떤 sound() 메서드가 호출될지 결정됩니다. 이 자습서의 코드 예제는 Java 12에서 컴파일하고 실행됩니다.

Comments are closed.