Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah kegunaan kelas abstrak dalam php

Apakah kegunaan kelas abstrak dalam php

WBOY
WBOYasal
2022-03-03 11:46:511655semak imbas

Dalam PHP, kelas abstrak digunakan terutamanya untuk penyembunyian jenis dan berfungsi sebagai pembolehubah global kerana Terdapat kaedah abstrak dalam kelas, dan kelas ini adalah kelas abstrak.

Apakah kegunaan kelas abstrak dalam php

Persekitaran pengendalian artikel ini: sistem Windows 10, PHP versi 7.1, komputer Dell G3.

Apakah kegunaan kelas abstrak dalam PHP?

Kelas abstrak sering digunakan untuk mewakili konsep abstrak yang diperoleh daripada analisis dan reka bentuk kawasan masalah Ia adalah satu siri yang kelihatan berbeza tetapi pada asasnya adalah An abstrak daripada konsep konkrit yang sama.
Kelas abstrak tidak lengkap, ia hanya boleh digunakan sebagai kelas asas. Dalam pendekatan berorientasikan objek, kelas abstrak digunakan terutamanya untuk jenis menyembunyikan dan bertindak sebagai pembolehubah global.

Dalam kaedah berorientasikan objek, kelas abstrak digunakan terutamanya untuk menyembunyikan jenis. Bina penerangan abstrak tentang set tingkah laku tetap, tetapi set tingkah laku ini boleh mempunyai beberapa kemungkinan pelaksanaan konkrit. Penerangan abstrak ini ialah kelas abstrak, dan set mana-mana kemungkinan pelaksanaan konkrit ini diwakili oleh semua kelas terbitan yang mungkin. Modul boleh beroperasi pada badan abstrak. Oleh kerana modul bergantung pada abstraksi tetap, ia tidak boleh diubah suai pada masa yang sama, dengan memperoleh daripada abstraksi ini, fungsi tingkah laku modul ini juga boleh dilanjutkan

Operasi contoh adalah seperti berikut:

<?php
//抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。
//只要有一个抽象方法,那么此类必须定义为抽象类。
//抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。
//在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。
//抽象类不能定义私有方法,可以定义私有属性。
//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
abstract class Employees{
  protected $name = null;
  function __construct($nameStr){
    $this->name = $nameStr;
  }
  abstract public function work();
  public function work1(){
    echo "<p>$this->name</p>";
  }
  //function __destruct(){}
}
class Managers extends Employees{
  public function __construct($nameStr){
    parent::__construct($nameStr);
  }
  /*public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
    echo "<p>$this->name is working</p>";
  }*/
}
//$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。
$obj2 = new Managers(&#39;e2&#39;);
//$obj2->work();

Menjalankan kod di atas akan menggesa mesej ralat berikut:

Ralat maut: Pengurus Kelas mengandungi 1 kaedah abstrak dan oleh itu mesti diisytiharkan sebagai abstrak atau melaksanakan kaedah yang selebihnya (Pekerja::kerja) dalam D: phproottestClassDemo.php pada baris 26

Selepas memadamkan kedudukan gesaan ralat dan komen kod pada penghujungnya, tukarkannya kepada kod berikut:

<?php
//抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。
//只要有一个抽象方法,那么此类必须定义为抽象类。
//抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。
//在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。
//抽象类不能定义私有方法,可以定义私有属性。
//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
abstract class Employees{
  protected $name = null;
  function __construct($nameStr){
    $this->name = $nameStr;
  }
  abstract public function work();
  public function work1(){
    echo "<p>$this->name</p>";
  }
  //function __destruct(){}
}
class Managers extends Employees{
  public function __construct($nameStr){
    parent::__construct($nameStr);
  }
  public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
    echo "<p>$this->name is working</p>";
  }
}
//$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。
$obj2 = new Managers(&#39;e2&#39;);
$obj2->work();

Hasil ujian berjalan:

e2 berfungsi

Kajian yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apakah kegunaan kelas abstrak dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn