• 使用abstract修饰的类叫做抽象类
  • 抽象类不可以被实例化,只能被继承
  • 因为抽象类无法被实例化,因此私有成员在类中没有实质意义(还需要额外提供受保护或者共有方法来实现访问)
  • 抽象类的目的是用来规范子类(通常必备抽象方法)
  • abstract还可以修饰方法,称之为抽象方法:抽象方法所在的类必须是抽象类,抽象方法不能有方法体
  • 有抽象方法的抽象类被继承时子类要么自身是抽象类要么实现所有的抽象方法
  • 抽象类这种管理结构,需要耗费u较多的架构和初始代码通常在比较大型或者规范的项目中才会使用。
<?php
    /*
     * 使用abstract修饰的类叫做抽象类
     * 抽象类不可以被实例化,只能被继承
     * 因为抽象类无法被实例化,因此私有成员在类中没有实质意义(还需要额外提供受保护或者共有方法来实现访问)
     * 抽象类的目的是用来规范子类(通常必备抽象方法)
     * abstract还可以修饰方法,称之为抽象方法:抽象方法所在的类必须是抽象类,抽象方法不能有方法体
     * 有抽象方法的抽象类被继承时子类要么自身是抽象类要么实现所有的抽象方法
     * 抽象类这种管理结构,需要耗费u较多的架构和初始代码通常在比较大型或者规范的项目中才会使用。
     */
    #定义一个父类
    abstract class Human{}
    //实例化Human会报错因为abstract修饰的不能被实例化
    #子类继承
    class Man extends Human{}
    //抽象方法类
    abstract class Animal{
        //抽象方法:没有方法体(用abstract关键字修饰)
        abstract public function eat();
    }
    //继承
    abstract class Dog extends Animal{}//子类继承有抽象方法的类的时候,可以申明为抽象类(不用实现父亲的抽象方法)
    //继承
    class Cat extends Animal{
        public function eat()
        {
            echo "吃饭";
            // TODO: Implement eat() method.
        }
    }
    $xl=new Cat();
    $xl->eat();


?>