Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 클래스 추상화

<시간/>

소개

객체 지향 프로그래밍에서 추상 클래스는 인스턴스화할 수 있는 클래스입니다. 즉, 이러한 클래스의 객체를 선언할 수 없습니다. PHP는 버전 5.0부터 abstarct 클래스의 개념을 지원합니다.

abstract 키워드로 정의된 클래스는 추상 클래스가 됩니다. 또한 하나 이상의 추상 메서드를 포함하는 모든 클래스도 추상으로 간주됩니다.

구문

<?php
class testclass{
   //
}
?>

이 클래스의 객체를 생성하려고 하면 PHP 파서는 다음과 같은 오류를 발생시킵니다 -

$a=new testclass();
PHP Fatal error: Uncaught Error: Cannot instantiate abstract class testclass

추상 방법

추상 메서드는 형식 힌트가 있는 서명, 즉 가시성, 인수 및 반환 유형만 선언하고 기능이 없습니다. 이러한 추상 클래스를 상속하는 클래스는 모든 추상 메서드를 재정의(정의 제공)해야 합니다. 자식 클래스의 해당 메서드는 부모 클래스와 동일한 서명을 가져야 합니다. 자식 클래스가 이 조건을 충족하지 않으면 PHP 파서에서 예외가 발생합니다. 추상 클래스를 확장하는 클래스는 이제 인스턴스화할 수 있으므로 구체 클래스라고 합니다.

다음 예제에서 부모 클래스에는 두 개의 추상 메서드가 있으며 그 중 하나만 자식 클래스에서 재정의됩니다. 이로 인해 다음과 같은 오류가 발생합니다. -

예시

<?php
abstract class testclass{
   abstract function test1();
   abstract function hello();
}
class myclass extends testclass{
   function test1(){
      echo "Overrides parent test method";
   }
}
$a=new myclass();
?>

출력

다음은 오류 메시지입니다.

PHP Fatal error: Class myclass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (testclass::hello)

인수를 포함하는 추상 메서드

추상 메소드가 인수로 정의되면 동일한 수의 인수로 자식 클래스에서 재정의해야 합니다.

다음 예에서 상위 클래스의 추상 메소드에는 두 개의 인수가 있습니다. 자식 클래스도 두 개의 인수로 동일한 함수를 정의합니다.

예시

<?php
abstract class testclass{
   abstract function hello($name, $age);
}
class myclass extends testclass{
   function hello($name, $age){
      echo "My name is $name and my age is $age";
   }
}
$a=new myclass();
$a->hello("Ravi",20);
?>

출력

이것은 다음과 같은 출력을 생성합니다 -

My name is Ravi and my age is 20