Java의 다형성 유형 [예제를 사용한 정적 및 동적 다형성]

게시 됨: 2021-06-18

목차

Java에서 다형성이란 무엇입니까?

객체 지향 프로그래밍(OOP)의 중요한 개념 중 하나는 다형성(Polymorphism)으로 단일 작업이 다른 방식으로 수행될 수 있음을 의미합니다. 그것은 그리스어 단어에서 파생됩니다. poly와 morphs는 많은 것과 형태를 의미합니다. 상속을 통해 관련될 때 다른 형식이 존재합니다.

다른 클래스에서 메서드와 속성을 상속하는 상속과 마찬가지로 다형성은 이러한 메서드를 적용하고 다른 작업을 수행합니다. 개체는 다형성을 통해 다양한 형태로 자신을 성형할 수 있습니다.

즉, 엔터티는 서로 다른 시나리오에서 서로 다른 작업을 수행할 수 있습니다. 객체 지향 프로그래밍에서 다형성의 가장 일반적인 용도 중 하나는 부모 클래스 참조가 자식 클래스 객체를 참조하는 데 사용되는 경우입니다. 다양한 OOP 개념 및 예제에 대해 자세히 읽어보세요.

Java의 다형성은 세 가지 방법을 통해 달성할 수 있습니다.

메서드 재정의: 슈퍼 클래스와 하위 클래스가 동일한 메서드로 구성되는 경우 메서드 재정의는 하위 클래스의 메서드가 슈퍼 클래스의 메서드를 재정의하는 프로세스를 나타냅니다. 결과적으로 다른 작업을 수행하는 다른 조건에서 동일한 방법이 사용됩니다.

프로그램 출력:

자바 프로그래밍 언어

일반적인 영어

  1. 메소드 오버로딩: 메소드 오버로딩은 이름은 같지만 매개변수가 다른 메소드를 생성하는 프로세스를 말합니다. 예: void func() { … }, void func(int a) { … }, float func(double a) { … }, float func(int a, float b) { … }.

산출

**********

###########

  1. 연산자 오버로딩: 연산자 오버로딩은 연산자가 피연산자에 따라 다르게 동작하는 Java의 개념입니다. 예는 다음과 같습니다.
  • 연산자 "+"는 숫자 덧셈과 문자열 연결 모두에서 사용할 수 있습니다.
숫자 덧셈 문자열 연결
정수 = 5;

정수 b = 6;

정수 합계 = a + b; // 출력 = 11

문자열 첫 번째 = "파이썬";

문자열 두 번째 = "프로그래밍";

이름 = 첫 번째 + 두 번째; // 출력 = 파이썬 프로그래밍

  • 연산자 &,| 및 ! 논리 및 비트 단위 오버로딩에 사용할 수 있습니다.

Java의 다형성 유형

객체 지향 프로그래밍은 추상화, 캡슐화, 상속 및 다형성의 네 가지 기본 개념에 중점을 둡니다 . 다형성은 클래스 및 데이터 유형을 기반으로 객체를 다르게 처리하는 기능입니다.

Java 에는 컴파일 시간 다형성 Java의 런타임 다형성 의 두 가지 유형이 있습니다 . Java 다형성 은 정적 다형성 및 동적 다형성이라고도 합니다.

1. 정적 다형성(또는 컴파일 타임 다형성)

대부분의 다른 OOP 프로그래밍 언어와 마찬가지로 Java 다형성 을 사용하면 클래스 내에서 여러 메서드를 통합할 수 있습니다. 메소드는 동일한 이름을 사용하지만 매개변수는 다릅니다. 이것은 정적 다형성을 나타냅니다. 이 다형성은 컴파일러 시간 동안 해결되며 메서드 오버로드를 통해 달성됩니다. 매개변수 세트가 달라야 하는 세 가지 기준이 제공됩니다.

  • 매개변수 번호는 달라야 합니다.
  • 매개변수 유형은 달라야 합니다.
  • 매개변수의 순서가 다릅니다. 예를 들어 메서드가 문자열과 long을 수락하는 반면 다른 메서드는 long과 문자열을 수락합니다. 그러나 이러한 유형의 순서는 API가 이해하기 어렵게 만듭니다.

매개변수의 차이로 인해 모든 메서드는 다른 서명을 갖습니다. Java 컴파일러는 어떤 메소드가 호출되는지에 대한 아이디어를 가지고 있습니다.

세계 최고의 대학에서 온라인으로 소프트웨어 과정배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

정적 다형성의 예

Java가 정적 다형성을 지원하는 방법 중 하나는 메소드 오버로딩입니다. 정적 다형성에서 메소드 오버로딩의 경우를 보여주는 예는 다음과 같습니다.

예시:

클래스 SimpleCalculator

{

int add(int a, int b)

{

반환 + b;

}

int add(int a, int b, int c)

{

반환 + b + c;

}

}

공개 클래스 데모

{

공개 정적 무효 메인(문자열 인수[])

{

SimpleCalculator obj = 새로운 SimpleCalculator();

System.out.println(obj.add(25, 25));

System.out.println(obj.add(25, 25, 30));

}

}

프로그램의 출력

50

80

2. 동적 다형성(또는 Java의 런타임 다형성)

이러한 형태의 자바 다형성에서 컴파일러는 실행할 메소드를 결정하지 않습니다. 런타임에 프로세스를 수행하는 것은 JVM(Java Virtual Machine)입니다. 동적 다형성은 재정의된 프로세스에 대한 호출이 런타임에 해결될 때의 프로세스를 나타냅니다. 슈퍼클래스의 참조 변수는 재정의된 메서드를 호출합니다. 서브클래스와 슈퍼클래스 모두에 의해 구현되는 메소드는 동일한 이름을 공유하면서 다른 기능을 제공합니다.

런타임 다형성의 개념을 이해하기 전에 업캐스팅 프로세스를 이해하는 것이 중요합니다. 업캐스팅은 상위 클래스의 참조 변수가 자식 클래스의 객체를 참조하는 과정을 의미한다. PHP의 다형성에 대해 알아보세요.

동적 다형성(또는 런타임)의 예

예 1:

Bike와 Splendor의 두 클래스가 생성되고 Splendor의 클래스는 해당 run() 메서드를 재정의하는 Bike 클래스를 확장합니다. run() 메서드는 부모 클래스의 참조 변수에 의해 호출됩니다. 하위 클래스 메서드가 부모 클래스 메서드를 재정의하므로; 서브클래스 메소드는 런타임에 호출됩니다.

프로그램

클래스 바이크{

무효 run(){System.out.println("실행 중");}

}

클래스 Splendor는 Bike확장 합니다.{

void run(){System.out.println("30km로 안전하게 걷기");}

공공의 공전 무효 메인(문자열 인수[]){

자전거 b = new Splendor();//업캐스팅

b.run();

}

}

출력: 60km로 안전하게 걷기

실시예 2

이름이 "ABC"와 "XYZ"인 두 개의 클래스가 생성되며 여기서 XYZ는 자식 클래스이고 ABC는 부모 클래스입니다. 여기에서 부모 클래스의 myMethod() 메서드는 자식 클래스에 의해 재정의됩니다. 자식 클래스 개체는 부모 클래스 참조에 할당됩니다.

프로그램:

수업 ABC{

공개 무효 myMethod(){

System.out.println("재정의된 메서드");

}

}

공개 클래스 XYZ는 ABC를 확장합니다.{

공개 무효 myMethod(){

System.out.println("메서드 재정의");

}

공개 정적 무효 메인(문자열 인수[]){

ABC obj = 새로운 XYZ();

obj.myMethod();

}

}

산출

재정의 방법

결론

Java의 다형성 개념은 객체 지향 프로그래밍에서 가장 유용한 기능 중 하나입니다. 또한 정적 및 런타임 모두에서 메서드를 호출하는 기능은 적용 가능성을 확장합니다.

다형성의 개념을 도입한 배경에는 유연성이 있습니다. 또한 단일 참조 변수에서 많은 수의 객체를 처리하는 기능은 코딩을 조금 더 쉽게 만듭니다. 따라서 이 개념은 일상적인 코딩 작업에 사용되어야 하며 그 효과를 수용해야 합니다.

소프트웨어 기술, 개발 및 그 이면의 메커니즘에 대해 자세히 알아보려면 upGrad에서 제공하는 소프트웨어 개발 - 전체 스택 개발 전문화 과정의 Executive PG 프로그램을 확인하십시오. 전문화 과정은 23주 온라인 프로그램으로 300개 이상의 사례 연구를 통해 지식을 향상하고 사용 가능한 도구와 프로그래밍 언어를 통해 실용적인 기술을 향상할 수 있습니다. 코스와 관련하여 더 궁금한 사항이 있으면 메시지를 남겨주세요. 저희 팀에서 연락을 드리겠습니다.

지금 소프트웨어 개발 경력을 계획하십시오.

IIIT-B에서 소프트웨어 개발의 이그 제 큐 티브 PG 프로그램 신청