各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

php抽象类的作用是什么

管理员 2023-09-05
PHP
142

php抽象类的作用是什么

内容导读

收集整理的这篇技术教程文章主要介绍了php抽象类的作用是什么,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3005字,纯文字阅读大概需要5分钟

内容图文

1、什么是抽象方法?

我们在类里面定义的没有方法体的方法就是抽象方法。所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方法还要加一个关键字"abstract"来修饰。

例如:

abstract function fun1(); abstract function fun2();

2、什么是抽象类?

只要一个类里面有一个方法是抽象方法,那么这个类就定义为抽象类,抽象类也要使用“abstract”关键字来修饰;在抽象类里面可以有不是抽象的方法和成员属性,但只要有一个方法是抽象的方法,这个类就必须声明为抽象类,使用“abstract”修饰。

相关推荐:《PHP教程》

例如:

abstract class Demo{     var $test;     abstract function fun1();    abstract function fun2();     function fun3(){        ...    }}

3、抽象类有什么作用?

上例子中定义了一个抽象类“demo”使用了“abstract”来修饰,在这个类里面定义了一个成员属性"$test",和两个抽象方法“fun1”和“fun2”还有一个非抽象的方法fun3();

那么抽象类我们怎么使用呢?最重要的一点就是抽象类不能产生实例对象,所以也不能直接使用,前面我们多次提到过类不能直接使用,我们使用的是通过类实例化出来的对象。

那么抽象类不能产生实例对象我们声明抽象类有什么用呢?我们是将抽象方法作为子类重载的模板使用的,定义抽象类就相当于定义了一种规范,这种规范要求子类去遵守,子类继函抽象类之后,把抽象类里面的抽象方法按照子类的需要实现。子类必须把父类中的抽象方法全部都实现,否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化对象;

为什么我们非要从抽象类中继承呢?因为有的时候我们要实现一些功能就必须从抽象类中继承,否则这些功能你就实现不了,如果继承了抽象类,就要实现类其中的抽象方法;

例如:

<?abstract class Demo{    var $test;     abstract function fun1();    abstract function fun2();     function fun3() {        ...    }} $demo=new Demo(); //抽象类不能产生实例对象,所以这样做是错的,实例化对象交给子类 class Test extends Demo{    function fun1() {        ...    }     function fun2() {        ...    }} $test = new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法?>

4、抽象类的特点:

抽象类不能实例化,只能被继承。

抽象类不一定有抽象方法,有抽象方法的类,一定是抽象类。

抽象方法的可见性不能是private。

抽象方法在子类中,需要重写。

5、什么时候需要用抽象类?

有个方法,方法体不知如何写,子类中还必须有这个方法时,封装成抽象方法,类为抽象类。

控制子类中必须封装某些方法时,可以用抽象方法。

当需要控制类只能被继承,不能被实例化时。

6、接口

如果一个类中,所有的方法都是抽象方法,且没有成员属性,则这个类被称为接口(interface)。

interface Common{    abstract function work();    abstract function test($args);}

接口的继承(extends):

接口继承接口 interface 接口名称 extends 父接口名称

注意:类的继承是单继承(只能有一个父类),但接口的继承却是多继承,类对接口的实现也是多实现。

接口的实现(implements):

类实现接口 class 类名 implements 接口名称1,接口名称2, ...

继承类同时实现接口:

类继承父类同时实现接口 class 类名 extends 父类名 implements 接口名称

7、抽象类和接口的区别

接口是一种特殊的抽象类,接口中只包含抽象方法,没有成员属性。类实现(implements)接口时,必须完全实现接口中的所有方法;

类继承(extends)抽象类时,只需对需要用到的抽象方法进行重写。抽象类只能单继承,但接口却是多继承,类对接口的实现也是多实现。

以上就是php抽象类的作用是什么的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的php抽象类的作用是什么全部内容,希望文章能够帮你解决php抽象类的作用是什么所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

扫码关注

qrcode

QQ交谈

回顶部