> 백엔드 개발 > PHP 튜토리얼 > PHP 및 JAVA의 오버로드 및 재정의 소개

PHP 및 JAVA의 오버로드 및 재정의 소개

WBOY
풀어 주다: 2016-07-29 08:48:09
원래의
1156명이 탐색했습니다.

오버로딩: 같은 클래스 내에서 이름은 같지만 반환값이나 매개변수 유형이 다른 함수를 오버로딩이라고 합니다.
재정의: 동일한 이름, 동일한 반환 값 유형 및 동일한 매개변수를 가진 함수를 재정의라고 합니다. 하위 클래스가 상위 클래스의 메서드를 재정의하는 것을 말합니다.
PHP는 메서드 및 연산자 오버로드를 지원하지 않습니다. JAVA는 연산자 오버로딩을 지원하지 않습니다(그러나 " "는 실제로 연산자 오버로딩입니다).

코드 복사 코드는 다음과 같습니다.


Class Father {
공개 함수 fmeth1() {
echo "fmeth1()...
"
}
//public function fmeth1($str1) {
// echo "fmeth1() with $ str1.. .
";
//}
}
Class Son은 Father {
public function fmeth1() {
echo "fmeth1() in son... }
}
$s=new Son();
$s->fmeth1();
?>


여기서 상위 클래스의 fmeth1 메소드는 오버로드될 수 없습니다.
Java의 오버로딩 및 오버라이드 예시 설명
Java 언어 사양에서 메소드의 특성에는 메소드 이름, 매개변수의 수 및 유형만 포함되며 메소드의 반환은 포함되지 않습니다. . 유형, 매개변수 이름 및 예외가 발생했습니다. Java 컴파일러는 메소드의 오버로드를 확인할 때 이러한 조건에 따라 두 메소드가 오버로드된 메소드인지 여부를 판별합니다. 그러나 Java 컴파일러가 메소드 대체를 확인할 때 두 메소드(수퍼 유형 및 하위 유형)에서 발생한 반환 유형과 예외가 동일한지 추가로 확인합니다.
질문 번호: 3

코드 복사 코드는 다음과 같습니다.


class A {
protected int method1(int a, int b) { return 0; }
}


클래스 A를 확장하는 클래스에서 유효한 두 가지는 무엇입니까? (2개 선택)
A. (int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0 }
C. private int method1(int a, long b) { return 0 ; }
D. public short method1(int a, int b) { return 0 }
E. static protected int method1(int a, int b) }
310번 질문 035, 표준 답변은 A, C입니다.
A는 재정의되고 액세스는 protected--->public에서 확장되었으므로 정답입니다.
B와 D도 재정의입니다. B는 protected--->private에서 범위가 좁아지고 D의 반환 유형이 변경되었으므로 모두 잘못되었습니다.
C는 오버로드입니다. 액세스의 너비와 반환 유형은 중요하지 않으므로 정확합니다.
E는 재정의되지만 정적 메서드는 슈퍼 클래스에서 인스턴스 메서드를 숨길 수 없기 때문에 정적이 추가됩니다. 따라서 잘못된 것입니다.
그러니 AC를 선택하세요.
상위 클래스를 상속하고 해당 메서드를 덮어쓰는 하위 클래스를 재정의 - 다시 쓰기, 덮어쓰기, 재정의라고 합니다.
이름은 같지만 매개 변수가 다른 여러 메서드 이름이 있는 하위 클래스를 오버로드 - 무거운(zhong) 로드라고 합니다. 오버로딩
오버로딩은
여러 메소드가 이름은 같지만 매개변수가 다른 경우에 생성됩니다.
그런 다음 서로 다른 매개변수를 호출하고 실제로 서로 다른 메소드를 호출하는 것은
실제로도 다음과 같이 이해될 수 있습니다. 이름은 다르지만
덮어쓰기(OVERWRITE) 참고
원래 메서드의 "가시성"을 줄일 수 없습니다.
다른 반환 유형은 메서드 재정의를 구성할 수 없습니다.
오버로드(OVERLOAD) 참고
다른 매개변수는 과부하를 구성할 수 있습니다.

위 내용은 Allowoverride 내용을 포함하여 PHP 및 JAVA의 Allowoverride 오버라이드 및 재정의에 대한 소개입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿