一、抽象類
1、只要包含抽象方法的類就是抽象類
2、抽象類必須加abstract 修飾
3、抽象類不能直接實例化
4、抽象類必須被繼承才能使用,而且還要完成裏面的所有抽象方法
5、如果有任何一個抽象方法沒有被實現 那麼這個類也必須是抽象類
abstract class A{
abstract public function say();
}
abstract class B extends A{
public function say(){
}
}
class C extends B{
public function say(){}
}
二、抽象方法
1、沒有方法體的方法
2、必須使用abstract來修飾
abstract class Animal{
abstract public function show();
}
3、抽象方法需要被重寫
4、重寫了所有抽象方法的類纔算是一個完整的類,可以被實例化
三、抽象類和抽象方法的作用
就是在企業中制定規範的作用
四、接口 作用:指定規範
1、定義格式
interface 接口名{
[常量]
[抽象方法]
}
2、特性:
在接口裏面所有方法都是抽象方法 不需要特殊修飾
接口與接口之間 是繼承關係
類與接口之間是實現關係
實現接口可以多實現 中間用逗號隔開
類在繼承其他類的時候 可以實現接口(多實現)繼承一定要寫在實現的前面
//定義一個USB接口
interface USB{
//在接口裏 所有的方法都是抽象方法 不需要額外修飾 不能使用普通方法
public function run();
}
//接口與接口之間是繼承關係
interface ps2 extends USB{
public function move();
}
interface typeC{
public function xxx();
}
class A{}
//類與接口之間是實現關係
//實現接口可以多實現 中間用逗號隔開
//類在繼承其他類的同時可以實現接口(多實現)繼承一定要在實現的前面
class Mouse extends A implements ps2,typeC{
public function run(){}
public function move(){}
public function xxx(){}
}
3、作用:制定規範使用
4、與抽象類的差異
單純的用於制定規範 接口兩種都可以
在制定規範的時候要共享一些方法 只能使用抽象類
五、多態
多態:不同的對象做相同的事情得到不同的結果
class MeiZi{
public function meet($obj){
$obj->ber();
}
}
//制定規範
abstract class Hanzi{
abstract public function ber();
}
class DDS extends Hanzi{
public function ber(){
echo'滾';
}
}
class GFS extends Hanzi{
public function ber(){
echo'不滾';
}
}