>  기사  >  Java  >  Java 재작성, 오버로딩 및 다형성을 정의하고 사용하는 방법

Java 재작성, 오버로딩 및 다형성을 정의하고 사용하는 방법

王林
王林앞으로
2023-05-04 17:22:07848검색

1. 다시 작성:

a.정의:

재작성은 하위 클래스가 상위 클래스에 대한 액세스를 허용하는 메소드 구현을 재작성하는 프로세스입니다. 반환 값이나 형식 매개변수는 변경할 수 없습니다. 즉, 쉘은 변경되지 않고 코어는 다시 작성됩니다!

재정의의 장점은 하위 클래스가 필요에 따라 자체 동작을 정의할 수 있다는 것입니다. 즉, 하위 클래스는 필요에 따라 상위 클래스의 메서드를 구현할 수 있습니다.

재정의 메서드는 새로 확인된 예외나 재정의된 메서드에 의해 선언된 것보다 더 광범위한 예외를 발생시킬 수 없습니다. 예:

동물 수업{

공개 무효 이동(){

System.out.println("동물은 움직일 수 있습니다");

} }

클래스 개는 동물을 확장합니다{

공개 무효 이동(){

System.out.println("개는 달리고 걸을 수 있습니다");

} }

그런 다음 다음을 인용합니다.

Animal a = new Animal(); // 동물 객체

동물 b = new Dog(); // 개 객체

a.move();//Animal 클래스의 메소드 실행

b.move();//Dog 클래스의 메소드 실행

출력은 다음과 같습니다:

动物可以移动
狗可以跑和走

위의 예에서 볼 수 있듯이 b는 Animal 유형에 속하지만 Dog 클래스의 move 메서드(우리가 재정의한 메서드)를 실행합니다.

이는 컴파일 단계에서 매개변수의 참조 유형만 확인하기 때문입니다.

그러나 런타임 시 JVM(Java Virtual Machine)은 객체의 유형을 지정하고 객체의 메서드를 실행합니다.

따라서 위의 예에서는 Animal 클래스에 move 메소드가 존재하기 때문에 컴파일이 성공한 것입니다. 그러나 런타임에는 특정 객체의 메소드가 실행됩니다.

b. 규칙:

1. 매개변수 목록은 재정의된 메서드의 목록과 정확히 동일해야 합니다.

2. 반환 유형은 재정의된 메서드의 반환 유형과 다를 수 있지만 상위 클래스 반환 값의 파생 클래스여야 합니다.

3. 접근 권한은 상위 클래스에서 재정의된 메소드의 접근 권한보다 낮을 수 없습니다.

4. 상위 클래스의 멤버 메소드는 해당 하위 클래스에 의해서만 재정의될 수 있습니다. 동일한 패키지의 하위 클래스가 private 및 final로 선언된 메서드를 제외한 모든 상위 클래스 메서드를 재정의할 수 있는 경우.

5. final로 선언된 메서드는 재정의할 수 없고, static으로 선언한 메서드는 재정의할 수 없지만 다시 선언할 수 있습니다.

6. 하위 클래스와 상위 클래스가 동일한 패키지에 없는 경우 하위 클래스는 공개 및 보호로 선언된 상위 클래스의 최종이 아닌 메서드만 재정의할 수 있습니다.

7. 재정의된 메서드는 재정의된 메서드가 예외를 발생시키는지 여부에 관계없이 모든 비필수 예외를 발생시킬 수 있습니다. 그러나 재정의된 메서드는 새로운 필수 예외 또는 재정의된 메서드에 의해 선언된 것보다 더 광범위한 필수 예외를 발생시킬 수 없으며 그 반대의 경우도 마찬가지입니다.

2. 과부하:

C++과 같은 의미입니다.

오버로딩은 클래스 내에서 이름은 같지만 매개변수가 다른 메서드입니다. 반환 유형은 동일하거나 다를 수 있습니다.

오버로드된 각 메서드(또는 생성자)에는 고유한 매개 변수 유형 목록이 있어야 합니다.

가장 일반적으로 사용되는 위치는 생성자의 오버로딩입니다.

재정의와의 차이점은 오버로딩이 다른 매개변수에 초점을 맞춘다는 것입니다.

3. 다형성:

a.정의:

다형성은 동일한 행동이 여러 가지 다른 표현이나 모양을 가질 수 있는 능력입니다. 다형성은 서로 다른 인스턴스를 사용하여 서로 다른 작업을 수행하는 동일한 인터페이스입니다.

인터페이스를 잘 적용하기 위해서는 다형성의 개념을 배우는 것이 매우 중요합니다.

다형성이 존재하기 위한 세 가지 필수 조건:

1.상속

2. 다시 작성

3. 상위 클래스 참조는 하위 클래스 객체를 가리킵니다

예를 들어, 이 예에서 상위 클래스의 참조는 하위 클래스의 객체를 가리킵니다.

상위 p = 새 하위();

참고: 다형성을 사용하여 메소드를 호출하는 경우 먼저 해당 메소드가 상위 클래스에 있는지 확인하십시오. 존재하지 않으면 컴파일 오류가 발생하며, 하위 클래스에서 동일한 이름의 메소드를 호출하십시오.

b. 가상 기능:

가상 함수는 다형성의 기초 중 하나입니다. 물론 JAVA의 모든 함수는 기본적으로 C++ 의미의 가상 함수이므로 동적 바인딩이 Java의 기본 동작이므로 특별히 주의할 필요가 없습니다.

함수가 Java에서 가상 함수 특성을 갖지 않도록 하려면 final 키워드를 추가하여 비가상 함수로 만들 수 있습니다.

위 내용은 Java 재작성, 오버로딩 및 다형성을 정의하고 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제