PHP 객체지향 최종 클래스 및 최종 메소드

高洛峰
풀어 주다: 2023-03-05 08:22:01
원래의
1435명이 탐색했습니다.

final---클래스 및 메서드 이전에 사용됩니다.
최종 클래스---상속될 수 없습니다.
최종 방법---재정의할 수 없습니다.
최종 클래스는 상속할 수 없습니다.
클래스가 상속되는 것을 원하지 않으면 final을 사용하여 클래스를 수정합니다. 이 클래스는 상속되지 않습니다. 예를 들어, 우리가 설정한 Math 클래스에는 우리가 수행하려는 수학적 계산 방법이 포함되어 있으므로 이를 수정하거나 상속할 필요가 없습니다.

<? 
//声明一个final类Math 
final class Math{ 
public static $pi = 3.14; 

public function __toString(){ 
return "这是Math类。"; 
} 
} 
$math = new Math(); 
echo $math; 

//声明类SuperMath 继承自 Math类 
class SuperMath extends Math { 
} 
//执行会出错,final类不能被继承。 

?>
로그인 후 복사

프로그램 실행 결과

Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 14
로그인 후 복사

최종 메서드는 재정의될 수 없습니다.
클래스의 메서드가 하위 클래스에 의해 재정의되는 것을 원하지 않는 경우 이 메서드를 final 메소드. 이 메소드 앞에 final 수정자를 추가해야 합니다.

이 메서드가 하위 클래스에 의해 재정의되면 오류가 발생합니다.

<? 
//声明一个final类Math 
class Math{ 
public static $pi = 3.14; 
public function __toString(){ 
return "这是Math类。"; 
} 
public final function max($a,$b){ 
return $a > $b ? $a : $b ; 
} 
} 
//声明类SuperMath 继承自 Math类 
class SuperMath extends Math { 
public final function max($a,$b){} 
} 
//执行会出错,final方法不能被重写。 

?>
로그인 후 복사

프로그램 실행 결과

Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 16
로그인 후 복사

PHP 객체지향 최종 클래스 및 최종 메소드에 대한 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

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