> 백엔드 개발 > PHP 튜토리얼 > 객체지향 PHP의 Final 키워드에 대한 자세한 설명(코드 예시)

객체지향 PHP의 Final 키워드에 대한 자세한 설명(코드 예시)

易达
풀어 주다: 2023-04-08 17:20:01
원래의
2254명이 탐색했습니다.

이 글의 목표:

1. PHP에서 Final 키워드의 정의를 이해합니다.

2. PHP에서 Final 키워드의 역할을 이해합니다.

3. PHP에서 Final 키워드의 사용 시나리오를 이해합니다.

4. PHP에서 Final 키워드의 핵심을 익히십시오. 단어의 구체적인 구현

은 여전히 ​​이전의 일관된 사고를 따르며, 3W1H 방법을 통해 학습하므로 먼저

(1)을 이해하고, PHP에서 Final 키워드의 정의를 이해합니다(What )

클래스에 final이 앞에 추가되면 이 클래스를 상속할 수 없습니다. final이 메서드 앞에 추가되면 이 메서드를 재정의할 수 없습니다.

(2) PHP에서 Final 키워드의 역할을 이해합니다. Why)

주요 기능은 2가지입니다.

1. 클래스 상속 방지

2. 클래스 메소드 재정의 방지

(3) PHP에서 Final 키워드의 사용 시나리오 이해(Where) 클래스에 하위 클래스가 없거나 클래스의 메서드를 재정의할 수 없는 경우 최종 구현 사용을 고려할 수 있습니다

(4), PHP에서 Final 키워드의 특정 구현을 마스터하세요(방법)

요약:

1. 최종 클래스의 정의 형식은 다음과 같습니다. 최종 클래스 클래스 이름 {}

2. PHP5에만 최종 키워드 개념이 있다는 점에 유의하세요

3. 최종 메서드의 정의 형식은 다음과 같습니다. 최종 공개(또는 보호) 함수 메서드 이름(매개변수 .....){}

4. 클래스가 최종 클래스로 정의되면 상속될 수 없습니다. 하위 클래스를 가질 수 없습니다

5. 일단 메소드가 최종 메소드로 정의되면 하위 클래스로 분류할 수 없습니다. Rewrite

모든 요약은 연습에서 파생되므로 다음으로 이를 하나씩 증명해야 합니다. 안심하고 사용하세요

(5), 특정 코드

1. 사례 1:

실습 목표:

1 최종 클래스 정의 형식은 다음과 같습니다. 결과는 다음과 같습니다.

Human의 eat 메소드가 실행됩니다

2. 사례 2:

실습 목표: 1. 최종 메소드 정의 형식은 최종 공개(또는 보호) 함수 메소드 이름(매개변수)입니다. ...) {}

<?php
//定义“人”类
final class Human{
    public function eat(){
        echo "Human 中的eat方法被执行了<br/>";
    }
}

$human = new Human();
$human->eat();
?>
로그인 후 복사

작업 결과는 다음과 같습니다.

Human Execute의 최종 eat 메서드

3. 사례 3:

실제 목표:1. , 상속될 수 없습니다. 즉, 하위 클래스를 가질 수 없습니다

<?php
class Human{
    final public function eat(){
        echo "Human 中的 类型为final的eat方法被执行了<br/>";
    }
}
$human = new Human();
$human->eat();
?>
로그인 후 복사

실행 결과는 다음과 같습니다.

치명적인 오류: 클래스 NbaPlayer는 14행의 D:E-classclass-codeclassingindex.php에 있는 최종 클래스(Human)에서 상속받을 수 없습니다.

4. 사례 4:

연습 목표:
1. 메서드 한 번 최종 메서드로 정의된 경우 하위 클래스로 재정의할 수 없습니다.

<?php
//定义“人”类
final class Human{
    public function eat(){
        echo "Human 中的 类型为final的eat方法被执行了<br/>";
    }
}

//定义Nba球员类
class NbaPlayer extends Human{
    public function eat(){
        
    }
}
?>
로그인 후 복사

작업 결과:

치명적인 오류: Cannot 14행의 D:E-classclass-codeclassingindex.php에서 최종 메소드 Human::eat()를 재정의합니다

( 6) 배운 내용을 적용합니다

지금까지 최종에 대해 명확하게 이해해야 합니다. 우리는 배운 지식을 사용하여 다음 문제를 해결했습니다

문제: 수년간의 경험을 바탕으로 실제로 많은 데이터 작업 방법을 하나의 프로젝트에서 사용할 수 있을 뿐만 아니라 여러 프로젝트에서 사용할 수 있습니다. , 프로젝트의 여러 위치를 재사용할 수 있으므로 이러한 공통 메서드를 하나의 클래스로 캡슐화할 계획이지만 이 클래스에는 하위 클래스가 필요하지 않으며 그 안에 있는 메서드를 재정의하는 것을 원하지 않습니다. 하다?

아이디어 분석:

1. 공통 데이터 연산 방법을 포함하는 클래스 생성

2. 클래스가 상속되는 것을 원하지 않기 때문에 최종 역할과 결합하여 클래스를 정의할 수 있습니다. as a final class


3. 클래스가 최종 클래스로 정의되면 내부 메소드는 자연스럽게 다시 작성되지 않습니다. 하위 클래스가 없기 때문에 하위 클래스에서 어떻게 다시 작성할 수 있습니까?

<?php
//定义“人”类
class Human{
    final public function eat(){
        echo "Human 中的 类型为final的eat方法被执行了<br/>";
    }
}

//定义Nba球员类
class NbaPlayer extends Human{
    public function eat(){
        echo "NbaPlayer中的eat方法,重写了父类的eat方法<br/>";
    }
}
?>
로그인 후 복사

실행 결과는 다음과 같습니다.

난수 생성 방법

설명: 이 예는 조금 간단하지만, 모두가 자신의 생각을 분석하는 데 주의를 기울이고 최대한 정확하고 명확하기를 바랍니다

요약:

1. 이 문서에서는 주로 최종 정의, 기능 및 구체적인 구현에 대해 설명합니다.

이 문서가 도움이 되기를 바랍니다. 모두 감사합니다! ! !

위 내용은 객체지향 PHP의 Final 키워드에 대한 자세한 설명(코드 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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