abstract 关键字 代表抽象类;
场景联想:如果项目经理需要对所有的子类进行规范,就是说,这些成员必须有,且必须使用那些名字,就需要使用抽象类的概念了;
1.抽象类不能实例化;
2.如果一个类里面有其他方法,被申明为抽象类了,这个类就得声明抽象类
3.只要这个方法被声明抽象方法,就不能写函数体,将函数后面的{}去掉,函数体有子类实现;
4.在继承一个抽象类的时候,子类必须定义父类中的所用抽象方式;不是抽象方法,子类可以不用定义;
接口:interface
接口的用途和抽象类差不多,都是为了写一些规范;
1.使用interface关键字定义接口
interface pp{
public function fn();
}
interface aa{
public function fn();
}
接口的方法都是空的,没有函数体;
2.接口中的所有方法都是public;
3.使用implements这个操作符;
class ss implements pp{
public function fn(){}
}
4.一个类可以实现多个接口,接口和接口之间用逗号隔开;
5.接口和接口之间,方法尽量不要重名,如果重名了,那么参数要保持一致;
class ss implements pp,aa{
public function fn(){}
}
抽象类和接口的区别?
1.接口使用implements 而抽象类使用extends实现;
2.接口中只能声明公有的方法,抽象类:属性,常量,方法,都可以申明;
3.接口没有构造函数,抽象类有;
4.接口可以实现多个接口,但抽象类只能继承一个;