>  기사  >  백엔드 개발  >  PHP의 추상 클래스와 정적 메소드는 무엇입니까?

PHP의 추상 클래스와 정적 메소드는 무엇입니까?

王林
王林원래의
2020-09-29 09:36:142144검색

PHP에서 추상 클래스는 클래스 앞에 추상 키워드가 추가된 클래스와 추상 메서드를 의미하며, 직접 인스턴스화할 수는 없습니다. 정적 메서드는 정적 키워드로 수정된 메서드를 의미합니다. 작업.정적 속성.

PHP의 추상 클래스와 정적 메소드는 무엇입니까?

Abstract class

Abstract 클래스란 클래스 앞에 추상 키워드가 추가된 클래스와 추상 메소드(클래스 메소드 함수 키워드 앞에 추가된 추상 키워드)를 의미합니다.

(추천 튜토리얼: php 비디오 튜토리얼)

추상 클래스는 직접 인스턴스화할 수 없습니다. 추상 클래스는 하위 클래스에 필요한 메서드만 정의(또는 부분적으로 구현)합니다. 서브클래스는 추상 클래스를 상속하고 추상 클래스의 모든 추상 메서드를 구현하여 추상 클래스를 구체적으로 만들 수 있습니다.

하위 클래스를 인스턴스화해야 하는 경우 추상 클래스에 모든 추상 메서드를 구현해야 합니다. 서브클래스가 추상 클래스의 모든 추상 메서드를 구현하지 않는 경우 서브클래스도 추상 클래스이므로 클래스의 앞에 abstract 키워드가 와야 하며 인스턴스화할 수 없습니다.

예:

abstract Class AbstractClass
{
    abstract public function A();//这里不要携带body
    abstract protected function B();//这里不要携带body
    public function C(){}//这里要携带body
}

class ClassA extends AbstractClass
{
    public function A(){
        echo "Hello,I&#39;m A <br/>";
    }
    protected function B(){
        echo "Hello,I&#39;m B <br/>";
    }
    public function E()
    {
        echo "Hello,I&#39;m E <br/>";
    }
}

정적 메서드:

정적 메서드는 static 키워드로 수정됩니다.

정적 메서드는 정적 속성을 작동하는 데 사용됩니다. 따라서 비정적 속성은 정적 메서드에서 조작할 수 없습니다.

정적 메서드는 객체를 통해 호출할 필요가 없으므로 정적 메서드에서는 의사 변수 $this를 사용할 수 없습니다.

정적 메소드에 액세스하는 방법은 무엇입니까?

클래스 내부: 클래스 이름::static 메서드 또는 self::static 메서드

클래스 외부: 클래스 이름::static 메서드 또는 객체 인스턴스->static 메서드

예:

class Person{
    public static $nums = 0;    // 静态属性的申明
    public $age = 0;
    public function addNum(){
        self::$nums++;
        echo self::$nums;   // 在类里面,可用self关键词访问静态属性
        echo Person::$nums;     // 类可直接访问静态属性
        // echo $this->nums;  // 报错,静态属性不可以由对象通过 -> 操作符来访问
        self::getNum();     // 在类里面,可用self关键词访问静态方法
        Person::getNum();   // 类可直接访问静态方法
    }
    public static function getNum(){
        // 静态方法
        // echo $this->age;  // 报错,静态方法里面不能操作非静态属性
        echo &#39;真的吗?&#39;.self::$nums;    //静态方法中只能操作静态属性 
    }
}
$p1 = new Person();
$p1->addNum();
echo $p1::$nums;    // 对象实例可以这样访问静态属性
Person::getNum();   // 类可直接访问静态方法
$p1->getNum();  // 对象实例可以这样访问静态方法

관련 권장 사항: PHP 훈련

위 내용은 PHP의 추상 클래스와 정적 메소드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.