PHP中抽象类和接口的区别与用法,如何正确运用?

2026-04-02 05:491阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1943个文字,预计阅读时间需要8分钟。

PHP中抽象类和接口的区别与用法,如何正确运用?

本文总结了PHP中抽象类和接口的相关知识点,供大家参考。

抽象类(Abstract Class)

1. 定义:抽象类是一种特殊的类,不能被实例化,但可以包含抽象方法(没有具体实现的方法)和普通方法。

2.作用:用于定义一个或多个抽象方法,让子类必须实现这些方法。

抽象方法(Abstract Method)

1. 定义:抽象方法是没有具体实现的方法,必须在子类中实现。

2.定义方式:在方法前加上`abstract`关键字。

接口(Interface)

1. 定义:接口是一种只包含抽象方法的规范,用于定义类必须实现的方法。

2.作用:提供一种机制,让多个类实现相同的接口,实现多态。

关键点

- 抽象类和接口的区别:

- 抽象类可以有普通方法和属性,接口只能有常量和抽象方法。 - 抽象类可以继承其他类,接口不能继承。 - 一个类可以实现多个接口,但不能继承多个抽象类。

- 实现接口: - 使用`implements`关键字。 - 必须实现接口中定义的所有抽象方法。

- 实现抽象类: - 使用`extends`关键字。 - 必须实现抽象类中定义的所有抽象方法。

- 抽象类和接口的使用场景: - 当需要定义一个或多个抽象方法时,使用抽象类或接口。 - 当需要实现多态时,使用接口。

希望以上内容能帮助大家更好地理解PHP中的抽象类和接口。

本文实例总结了php抽象类和接口相关知识点。分享给大家供大家参考,具体如下:

抽象类(一种抽象的类)

一、什么是抽象方法?

定义:一个方法如果没有方法体(一个方法,不使用{},直接使用分号结束的方法,才是没有方法体的方法),则这个方法就是抽象方法。

class Person{ abstract function say(); 没有方法体的 、使用abstract 关键字修饰 abstract function say(){ 这个不是、有方法体{}, }; }

总结 1.声明一个方法不使用{},而直接分号结束。2.如果是抽象方法,必须使用abstract(抽象 关键字来修饰)。

二、什么是抽象类呢?

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

2.如果声明一个抽象类,则这个类必须要使用abstract 关键字来修饰。

abstract class Person{ public $name; abstract function say(); abstract function eat(); }

注意

PHP中抽象类和接口的区别与用法,如何正确运用?

1.只要使用abstract 来修饰的类,就是抽象类。

2.抽象类是一个特殊的类,特殊在哪里(在抽象类中可以有抽象方法)。

3.除了在抽象类中可以有抽象方法以外,和正常的类完全一样。

注意2

1. 抽象类不能实例化对象(不能创建出对象)。

$p=new Person(); //报错

2. 如果看见抽象类,就必须写这个类的子类,将抽象类中的抽象方法覆盖(加上方法体)。

class student extend Person() { function say(){ // 只覆盖了父类的一个 } }

3. 子类必须全部实现(覆盖重写)抽象方法,这个子类才能创建对象,如果实现部分,那么还有抽象方法,他还是抽象类。

class student extend Person() { function say(){ // 只覆盖了父类的一个 } }

抽象方法作用

1. 抽象方法就是一个规定,规定子类必须有这个方法的实现,功能交给子类实现。

只写出来结构,没有实现,实现交给具体的子类(按自己功能实现)。

class student extend Person() { function say(){ } // 覆盖了父类两个抽象方法 function eat(){ } }

抽象类作用

就是要求子类的结构,所以抽象类就是一个规范。(只有形)

接口 (接口是一种特殊抽象类,接口也是一种特殊的类 )

接口和抽象类的相同点

1.抽象类和接口都有抽象方法。

2.抽象类和接口不能创建实例对象。

3.抽象类和接口使用意义相同。定义一种规范。

不同点

1.接口中的方法必须全要是抽象方法(不能用不抽象的方法),所以在接口的所有方法中不使用abstract,直接使用 分号结束。

2.接口中的成员属性,必须是常量(不能有变量)。

3.接口所有权限必须是公有的 public

4.声明接口 不使用class 使用 interface ,

interface Person{ public $name; //不能声明变量 报错 const NAME='tom'// 可以声明常量 function test(); //因为接口中全部是抽象方法 所以 省去 abstract 。 function test1(); Protect function test3() 报错 只可以是 public } $re=new Person; //报错 不可以 创建实例化 对象 。 echo Person:: NAME; 输出常量。

接口应用的一些细节

1. 可以使用 extends,让一个接口继承另一个接口(接口和接口的关系---只有扩展抽象方法,没有覆盖关系)。

2. 可以使用一个类,来实现接口中的全部方法,也可也使用一个抽象类,来实现接口的部分方法。(类与接口 或者 抽象类 与接口,有覆盖的关系,---重写---实现接口中的抽象方法)

interface Demo{ const NAME='tom'; public function test(); public function test1(); } interface test extends Demo{ //接口对接口 只有扩展 function test2(); }

3.只要在子类中有覆盖的动作,就不要使用extends(继承 扩展)这个关键字,使用implements 实现。

interface Demo{ const NAME='tom'; public function test(); public function test1(); } interface test extends Demo{ //接口对接口 只有扩展 function test2(); } class Hello extends test{} // 报错 // 类对接口 有覆盖 abstract class Hello implements test{ } //不报错

4.一个类可以在继承另一个类的同时,使用implements 实现接口(可以实现多个接口)(一定要先继承,在实现接口)。

interface Demo{ const NAME='tom'; public function test(); public function test1(); } interface test extends Demo{ //接口对接口 只有扩展 function test2(); } Class Word{ Function test5(){ } } class Hello extends Word implements test{ //可以使用接口 function test(){ } function test1(){ } //实现接口 function test2(){ } //function test5(){ } }

5.实现多个接口,只需使用逗号分开即可。

php 中一个类 只要一个父类 。

interface Demo{ const NAME='tom'; function test1(); } interface Test extends Demo{ function test2(); } class World{ function test3(); } interface Abc{ function test6{} } class Hello extends World implements Test,Abc{ function test1(){ }; function test2(){ echo 11; }; function test3(){ }; function test6(){ }; } $re=new Hello; $re->test2(); //输出 11

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

本文共计1943个文字,预计阅读时间需要8分钟。

PHP中抽象类和接口的区别与用法,如何正确运用?

本文总结了PHP中抽象类和接口的相关知识点,供大家参考。

抽象类(Abstract Class)

1. 定义:抽象类是一种特殊的类,不能被实例化,但可以包含抽象方法(没有具体实现的方法)和普通方法。

2.作用:用于定义一个或多个抽象方法,让子类必须实现这些方法。

抽象方法(Abstract Method)

1. 定义:抽象方法是没有具体实现的方法,必须在子类中实现。

2.定义方式:在方法前加上`abstract`关键字。

接口(Interface)

1. 定义:接口是一种只包含抽象方法的规范,用于定义类必须实现的方法。

2.作用:提供一种机制,让多个类实现相同的接口,实现多态。

关键点

- 抽象类和接口的区别:

- 抽象类可以有普通方法和属性,接口只能有常量和抽象方法。 - 抽象类可以继承其他类,接口不能继承。 - 一个类可以实现多个接口,但不能继承多个抽象类。

- 实现接口: - 使用`implements`关键字。 - 必须实现接口中定义的所有抽象方法。

- 实现抽象类: - 使用`extends`关键字。 - 必须实现抽象类中定义的所有抽象方法。

- 抽象类和接口的使用场景: - 当需要定义一个或多个抽象方法时,使用抽象类或接口。 - 当需要实现多态时,使用接口。

希望以上内容能帮助大家更好地理解PHP中的抽象类和接口。

本文实例总结了php抽象类和接口相关知识点。分享给大家供大家参考,具体如下:

抽象类(一种抽象的类)

一、什么是抽象方法?

定义:一个方法如果没有方法体(一个方法,不使用{},直接使用分号结束的方法,才是没有方法体的方法),则这个方法就是抽象方法。

class Person{ abstract function say(); 没有方法体的 、使用abstract 关键字修饰 abstract function say(){ 这个不是、有方法体{}, }; }

总结 1.声明一个方法不使用{},而直接分号结束。2.如果是抽象方法,必须使用abstract(抽象 关键字来修饰)。

二、什么是抽象类呢?

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

2.如果声明一个抽象类,则这个类必须要使用abstract 关键字来修饰。

abstract class Person{ public $name; abstract function say(); abstract function eat(); }

注意

PHP中抽象类和接口的区别与用法,如何正确运用?

1.只要使用abstract 来修饰的类,就是抽象类。

2.抽象类是一个特殊的类,特殊在哪里(在抽象类中可以有抽象方法)。

3.除了在抽象类中可以有抽象方法以外,和正常的类完全一样。

注意2

1. 抽象类不能实例化对象(不能创建出对象)。

$p=new Person(); //报错

2. 如果看见抽象类,就必须写这个类的子类,将抽象类中的抽象方法覆盖(加上方法体)。

class student extend Person() { function say(){ // 只覆盖了父类的一个 } }

3. 子类必须全部实现(覆盖重写)抽象方法,这个子类才能创建对象,如果实现部分,那么还有抽象方法,他还是抽象类。

class student extend Person() { function say(){ // 只覆盖了父类的一个 } }

抽象方法作用

1. 抽象方法就是一个规定,规定子类必须有这个方法的实现,功能交给子类实现。

只写出来结构,没有实现,实现交给具体的子类(按自己功能实现)。

class student extend Person() { function say(){ } // 覆盖了父类两个抽象方法 function eat(){ } }

抽象类作用

就是要求子类的结构,所以抽象类就是一个规范。(只有形)

接口 (接口是一种特殊抽象类,接口也是一种特殊的类 )

接口和抽象类的相同点

1.抽象类和接口都有抽象方法。

2.抽象类和接口不能创建实例对象。

3.抽象类和接口使用意义相同。定义一种规范。

不同点

1.接口中的方法必须全要是抽象方法(不能用不抽象的方法),所以在接口的所有方法中不使用abstract,直接使用 分号结束。

2.接口中的成员属性,必须是常量(不能有变量)。

3.接口所有权限必须是公有的 public

4.声明接口 不使用class 使用 interface ,

interface Person{ public $name; //不能声明变量 报错 const NAME='tom'// 可以声明常量 function test(); //因为接口中全部是抽象方法 所以 省去 abstract 。 function test1(); Protect function test3() 报错 只可以是 public } $re=new Person; //报错 不可以 创建实例化 对象 。 echo Person:: NAME; 输出常量。

接口应用的一些细节

1. 可以使用 extends,让一个接口继承另一个接口(接口和接口的关系---只有扩展抽象方法,没有覆盖关系)。

2. 可以使用一个类,来实现接口中的全部方法,也可也使用一个抽象类,来实现接口的部分方法。(类与接口 或者 抽象类 与接口,有覆盖的关系,---重写---实现接口中的抽象方法)

interface Demo{ const NAME='tom'; public function test(); public function test1(); } interface test extends Demo{ //接口对接口 只有扩展 function test2(); }

3.只要在子类中有覆盖的动作,就不要使用extends(继承 扩展)这个关键字,使用implements 实现。

interface Demo{ const NAME='tom'; public function test(); public function test1(); } interface test extends Demo{ //接口对接口 只有扩展 function test2(); } class Hello extends test{} // 报错 // 类对接口 有覆盖 abstract class Hello implements test{ } //不报错

4.一个类可以在继承另一个类的同时,使用implements 实现接口(可以实现多个接口)(一定要先继承,在实现接口)。

interface Demo{ const NAME='tom'; public function test(); public function test1(); } interface test extends Demo{ //接口对接口 只有扩展 function test2(); } Class Word{ Function test5(){ } } class Hello extends Word implements test{ //可以使用接口 function test(){ } function test1(){ } //实现接口 function test2(){ } //function test5(){ } }

5.实现多个接口,只需使用逗号分开即可。

php 中一个类 只要一个父类 。

interface Demo{ const NAME='tom'; function test1(); } interface Test extends Demo{ function test2(); } class World{ function test3(); } interface Abc{ function test6{} } class Hello extends World implements Test,Abc{ function test1(){ }; function test2(){ echo 11; }; function test3(){ }; function test6(){ }; } $re=new Hello; $re->test2(); //输出 11

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。