抽象类和接口
Posted chengzi-he
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类和接口相关的知识,希望对你有一定的参考价值。
抽象类:
1.抽象类不能实例化对象
2.抽象类存在的目的是为了让子类继承
3.抽象类的定义和普通类定义一样,只不过前面需要加一个关键字,abstract
4.抽象类里面一般都要有抽象方法(可以没有),抽象方法是用来让子类实现的,而且子类必须实现,不实现就会报一个致命错误
5.抽象方法必须public或者protected,要不然子类没法继承实现
6.抽象方法如果有参数,参数有默认值,那么实现该方法的时候参数和默认值也要有
7.抽象类可以继承抽象类。子类在实现的时候所有的抽象方法都要实现
<?php abstract class Shengwu { abstract public function run(); } abstract class Person extends Shengwu { // 强制要求子类定义这些方法,且不能定义具体功能 注意没有大括号{} abstract public function say($name = php); // 普通方法(非抽象方法) public function eat() { echo "我吃了一个苹果 "; } } class Man extends Person { public function run() { echo ‘我可以奔跑‘; } public function say($name = php) { echo ‘我的名字是‘ . $name; } }
抽象类的使用:举一个简单的例子,数据库有很多种,像mysql,oracle,sqlserver等,对这些数据库的连接是不一样的,但是对数据库的查询,删除,更新等语法都是一样的,所以我们可以把一些公共的方法放到一块,写在一个类中,把这个类定义成抽象类,当然这个类是不能实例化对象的,因为仅依靠抽象类里面的方法是不能完成整个数据库操作的,不同的东西由各个子类进行实现。
接口:
1.接口中的方法都是抽象方法,所以abstruct可以省略不写
2.接口的声明是 interface 接口的实现是 implements
3.接口中的方法必须是public
4.接口只能规定方法,不能写属性,(接口中可以写常量,但是不建议写)
5.一个类可以实现多个接口,接口名称之间用逗号隔开
6.一个类可以先继承父类,然后再实现接口
7.接口可以继承接口,但是里面的方法都要实现
<?php
interface Eat
{ public function eatMianbao(); } interface Run { function fast(); } interface Jump extends Run { public function go(); } class Animal { } class Person extends Animal implements Eat, Jump { public function eatMianbao() { echo ‘我在吃面包‘; } public function go() { echo ‘我会跳远‘; } public function fast() { echo ‘我跑的很快‘; } }
接口的使用:接口本质是一种规范,在面向接口的开发中,领导会提前把接口写好,然后你来实现这个方法,具体的代码量和代码逻辑,使用接口的人是不需要知道,也不会关心的。
以上是关于抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章