오버라이딩은 PHP의 클래스, 객체, 캡슐화, 다형성, 오버로딩 등과 같은 개념과 유사한 객체 지향 프로그래밍 개념입니다. 함수와 클래스의 재정의는 기본 클래스나 부모 클래스의 메서드와 동일한 파생 클래스의 메서드가 생성될 때 수행됩니다. 두 메소드 모두 이름과 인수 개수가 동일합니다.
광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
PHP에서 재정의가 어떻게 작동하는지 살펴보겠습니다.
아래는 메소드 재정의 예시입니다.
코드:
class BaseClass { public function ABC() { echo "<br /> In the base class"; } } class DerivedClass extends BaseClass { // override the method ABC() of base class public function ABC() { echo "<br />In the derived class"; } } $obj1 = new BaseClass; $obj1->ABC(); $obj2 = new DerivedClass; $obj2->ABC();
출력:
액세스 수정자는 세 가지가 있습니다.
우리가 알고 있듯이 보호된 메서드는 기본 클래스와 파생 클래스에서 액세스할 수 있으며 하위 클래스에서는 공개로 설정할 수 있지만 비공개는 상위 클래스에서만 액세스할 수 있으므로 비공개로 설정할 수는 없습니다. 또한 클래스 메서드에 public 액세스 지정자가 있는 경우 파생 클래스의 재정의 메서드를 private 및 protected로 선언할 수 없습니다
접근 한정자를 사용한 재정의의 예는 다음과 같습니다.
코드:
class BaseClass { private function ABC() { echo "<br/>In the base class Method : ABC"; } protected function XYZ() { echo "<br/>In the base class Method : XYZ"; } } class DerivedClass extends BaseClass { // overriding with public for wider accessibility public function ABC() { echo "<br/> In the derived class Method : ABC"; } // overriding method // with more accessibility public function XYZ() { echo "<br/>In the derived class Method : XYZ"; } } //$obj1 = new BaseClass; //$obj1->ABC(); //throws fatal error //$obj1->XYZ(); //throws fatal error $obj2 = new DerivedClass; $obj2->ABC(); $obj2->XYZ();
출력:
마지막 키워드는 클래스와 메소드에 사용됩니다. 변수가 아닌 메소드와 클래스를 재정의할 수 있습니다.
메서드나 클래스가 final로 선언되면 해당 메서드나 클래스에 대한 재정의가 수행될 수 없으며 클래스와의 상속도 불가능합니다.
최종 키워드를 이용한 재정의 예시는 아래와 같습니다.
코드:
class BaseClass { // Final method – display // this cannot be overridden in base class final function display() { echo "<br /> In the Base class display function"; } /// method - ABC function ABC() { echo "<br /> In the Base cLass ABC function"; } } class DerivedClass extends BaseClass { function ABC() { echo "<br /> In the Derived class ABC function"; } } $obj1 = new DerivedClass; $obj1->display(); $obj1->ABC();
출력:
A class declared as final cannot be inherited. A Final Class further have final method along with other methods. But since the class itself is declared final there is no use of declaring a final method in a final class.
The example of class overriding using final keyword is written below.
Code:
// class declared as final cannot be overridden final class BaseClass { // method - ABC function ABC() { echo "<br> In the BaseClass Method ABC function"; } // Final method - display function display() { echo "<br> In the BaseClass Method display function"; } } // here you cannot extend the base class // as the base class is declared as final $obj1 = new BaseClass; $obj1->display(); $obj1->ABC();
Output:
위 내용은 PHP에서 재정의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!