Inhaltsverzeichnis
抽象类是一种特殊的类, 接口是一种特殊的抽象类, 而多态就要使用到抽象类或是接口
抽象类
什么是抽象方法?
什么是抽象类?
抽象类的作用:
接口
声明方式
接口和抽象类的对比
注意:
多态
Heim Backend-Entwicklung PHP-Tutorial [PHP] 抽象类与接口

[PHP] 抽象类与接口

Jun 20, 2016 pm 12:29 PM

抽象类是一种特殊的类, 接口是一种特殊的抽象类, 而多态就要使用到抽象类或是接口

抽象类

什么是抽象方法?

定义:在一个类中,没有方法体的方法就是抽象方法(就是一个方法没有使用{}而直接使用分号结束)

abstract function test();  //抽象方法 function test(){  //有方法体,但方法体为空的 } 
Nach dem Login kopieren

如果一个方法是抽象方法,就必须使用abstract修饰为什么要使用抽象方法?

什么是抽象类?

  1. 如果一个类中,有一个方法是抽象的则这个类就是抽象类

  2. 如果一个类是抽象类,则这个类必须要使用abstract修饰

  3. 抽象类是一种特殊的类,就是因为一个类中有抽象方法,其他不变。也可以在抽象类中声明成员属性,常量,非抽象的方法。

  4. 抽象类不能实例化对象(不能通过抽象类去创建一个抽象类的对象)

//普通的类class 类名{   }// 抽象类abstract class 类名 {   } abstract class Demo{  var a;  abstract function fun1();   function fun2()  {   }} 
Nach dem Login kopieren

抽象类的作用:

  1. 要想使用抽象类,就必须使用一个类去继承抽象类,而且要想使用这个子类,也就是让子类可以创建对象,子类就必须不能再是抽象类,子类可以重写父类的方法(给抽象方法加上方法体)。抽象方法中的方法没有方法体, 子类必须实现这个方法 (父类中没写具体的实现, 但子类必须有这个方法名)

  2. 列用抽象类,可以定义一些规范,让子类按这些规范去实现自己的功能

接口

  • 接口是一种特殊的抽象类, 抽象类又是一种特殊的类

  • 接口和抽象类是一样的作用

  • 抽象类提供了具体实现的标准,而接口则是纯粹的模版。接口只定义功能,而不包含实现的内容。接口用关键字 interface 来声明。

  • 因为PHP是单继承的, 如果使用抽象类,子类实现完抽象类就不能再去继承其它的类了。如果既想实现一些规范, 又想继承一个其他类。就要使用接口

声明方式

interface 接口名{  const 常量名 = 常量值;  //接口中的属性必须为常量  function 函数名();}echo 接口名::常量名; interface Demo{  const HOST = "localhost";  function fun();}echoDemo::HOST; //输出为localhost 
Nach dem Login kopieren

接口和抽象类的对比

  1. 作用相同,都不能创建对象, 都需要子类去实现

  2. 接口的声明和抽象类不一样

  3. 接口被实现的方式不一样

  4. 接口中的所有方法必须是抽象方法,只能声明抽象方法(而且不需要使用abstract修饰)

  5. 接口中的成员属性,只能声明常量,不能声明变量

  6. 接口中的成员访问权限 都必须是public, 抽象类中最低的权限protected

  7. 使用一个类去实现接口, 不是使用extends关键字, 而是使用implements这个词

    • 如果子类是重写父类接口中抽象方法,则使用 implements : 类–接口, 抽象类—接口 implements 。接口—接口 extends

使用 implements 的两个目的

1. 可以实现多个接口 ,而 extends 词只能继承一个父类

2. extends 和 implements 两个可以同时使用

注意:

  • 可以使用抽象类去实现接口中的部分方法
  • 如果想让子类可以创建对象,则必须实现接口中的全部抽象方法

  • 可以定义一个接口去继承另一个接口

  • 一个类可以去实现多个接口(按多个规范去开发子类), 使用逗号分隔多个接口名称

  • 一个类可以在继承父类的同时,去实现一个或多个接口(先继承,再实现)

多态

多态是面向对象的三大特性之一,是面向对象设计的重要特性。它展现了动态绑定(dynamic binding)的功能,也称为同名异式”(Polymorphism)。多态的功能可让软件在开发和维护时,达到充分的延伸性(extension)。事实上,多态最直接的定义就是让具有继承关系的不同类对象,可以对相同名称的成员函数调用,产生不同的反应效果。

以下是关于使用多态的一个 Demo :

<html>  <head>  <metacharset="utf-8">  head>  </html><?php  interface USB  //声明一个USB接口  {    function mount();    function work();    function unMount();  }    class UPan implements USB  //UPan实现了USB的功能  {    function mount()    {      echo "U盘挂载<br>";    }    function work()    {      echo "U盘工作<br>";    }    function unMount()    {      echo "U盘卸载成功<br>";    }  }   class Wire implements USB  //数据线实现了USB的功能  {    function mount()    {        echo "数据线挂载<br>";    }    function work()    {        echo "开始传输数据<br>";    }    function unMount()    {        echo "数据线卸载成功<br>";    }  }  class PC  //声明一个PC类  {    function USB($usb)    {        $usb->mount();        $usb->work();        $usb->unMount();    }  }   class Person  //声明一个Person类  {    function usePC()    {      $pc = new PC;      $upan = new UPan;      $wire = new Wire;       $pc->USB($upan);      $pc->USB($wire);    }  }  $p1 = new Person;  //实例化一个Person类  $p1->usePC(); 
Nach dem Login kopieren

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Mar 28, 2025 pm 05:11 PM

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Apr 01, 2025 pm 03:12 PM

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

See all articles