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抽象类的作用是什么所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。