类可以实例化对象类可以调用其静态成员类作为其他类的基础类,被继承类的两大功能:1:实例化对象2:基础类被继承存在两种特殊的类,功能单一!1:只能实例化对象,不能被继承2:只能被继承,不能实例化对象Final类,final方法final,最终在继承链条上,最末的一个类!其下不能再有子类。意味着不能被继承例如:认为,Book类的对象就是所有图书对象,不能再出现古书,小说类等等的子类classGoods{}finalclassBookextendsGoods{}classPhoneextendsGoods{}classStoreBookextendsBook{}报错提示:Fatalerror:ClassStoreBookmaynotinheritfromfinalclass(Book)inE:\VIP\75.phponline17StoreBook不能继承自final类BookFinal并没有增加额外的功能!意义是,在语法上限制某个类不能被继承!从而保证数据的完整性final关键字还可以限制方法可能出现final方法!限制方法是否能被重写!classGoods{protected$goods_name;protected$goods_price;finalpublicfunctiongetPrice(){return'¥'.$goods_price.'dollars';}}finalclassBookextendsGoods{}classPhoneextendsGoods{publicfunctiongetPrice(){return'¥'.$goods_price*0.9.'dollars';}}classStoreBookextendsBook{}报错提示:Fatalerror:CannotoverridefinalmethodGoods::getPrice()inE:\VIP\75.phponline20抽象类,abstract类抽象类:包含了抽象方法的类称之为抽象类,不能用于实例化对象,只能被继承抽象类,不完整的类,由于包含了不完整的方法不完整的方法,也叫抽象方法,指的是没有方法体的方法,称之为只有方法的声明,没有方法的实现的方法称之为抽象方法,也由不完整方法。需要使用关键字abstract来声明这个抽象方法与抽象类不完整方法:classGoods{protected$goods_name;protected$goods_price;finalpublicfunctiongetPrice(){return'¥'.$goods_price.'dollars';}abstractpublicfunctiongetName();//不完整的方法}不完整的类:abstractclassGoods{protected$goods_name;protected$goods_price;finalpublicfunctiongetPrice(){return'¥'.$goods_price.'dollars';}abstractpublicfunctiongetName();//不完整的方法}此时,再去实例化一个对象,就会报错:$goods=newGoods;报错提示:Fatalerror:CannotinstantiateabstractclassGoodsinE:\VIP\76.phponline12不能实例化抽象类Goods注意:抽象类是可以包含其他任何正常的成员的,在此基础上,增加了内部的抽象方法(并不是抽象类中只能包含抽象方法)只能被继承abstractclassGoods{protected$goods_name;protected$goods_price;finalpublicfunctiongetPrice(){return'¥'.$goods_price.'dollars';}abstractpublicfunctiongetName();//不完整的方法}finalclassPhoneextendsGoods{}错误提示:Fatalerror:ClassPhonecontains1abstractmethodandmustthereforebedeclaredabstractorimplementtheremainingmethods(Goods::getName)inE:\VIP\76.phponline16Phone类包含了一个抽象方法,要不也将其声明为抽象类,或者将抽象方法实现!但是,继承时,要求如果子类不是抽象类,那么继承的抽象方法要被实现(加上方法体才可以)。abstractclassGoods{protected$goods_name;protected$goods_price;finalpublicfunctiongetPrice(){return'¥'.$goods_price.'dollars';}abstractpublicfunctiongetName();//不完整的方法}finalclassPhoneextendsGoods{publicfunctiongetName(){retrun$this->goods_name;}}可见,抽象类,可以规定其非抽象的子类,必须要存在的相应成员方法!可以规定:子类中都必须存在,但是可以不同的方法!如:abstractclassGoods{protected$goods_name;protected$goods_price;finalpublicfunctiongetPrice(){return'¥'.$goods_price.'dollars';}abstractpublicfunctiongetName();//不完整的方法}classBookextendsGoods{publicfunctiongetName(){return'《'.$this->goods_name.'》';}}finalclassPhoneextendsGoods{publicfunctiongetName(){return$this->goods_name;}}