PHP(十三)抽象类

在自然语言中,我们理解抽象的概念是,一个物体的一种大的描述,这种描述对某类物体来说是共有的特性。那么在PHP中也是一样的,我们把一个类进行抽象,可以指明类的一般行为,这个类应该是一个模板,它指示它的子方法必须要实现的一些行为。
PHP抽象类应用的定义:
abstract class ClassName{
}
PHP抽象类应用要点:
  1.定义一些方法,子类必须完全实现这个抽象中所有的方法
  2.定义为抽象的类不能被实例化,不能从抽象类创建对象,它的意义在于被扩展
  3.抽象类通常具有抽象方法,方法中没有大括号
PHP抽象类应用重点:
  1.抽象方法不必实现具体的功能,由子类来完成
  2.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义
  3.抽象类的方法可以有参数,也可以为空
  4.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数
PHP抽象类应用示例:
abstract public function getName(); //注意没有大括号
抽象类
1、任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
2、定义为抽象的类不能被实例化。
3、被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
4、继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。

//设定抽象父类
        abstract class parentClass
        {
            //定义抽象方法
            abstract public function getValue();

            //定义带参抽象方法
            abstract public function setName($name='');

            //普通方法
            public function getSex($name='')
            {
                echo $name;
            }
        }

        //派生类
        class child_one extends parentClass
        {
            /*
                实现父类抽象方法
            */
            public function getValue()
            {
                //代码块...
                echo get_called_class();
                echo "getValue方法";
            }
            public function setName($name='')
            {
                //代码块...
                echo get_called_class();
                echo "setName方法";
            }
        }
        $c_one = new child_one;
        $c_one->getSex('张三');

        //派生类
        class child_two extends parentClass
        {
            /*
                实现父类抽象方法
            */
            public function getValue()
            {
                //代码块...
                echo get_called_class();
                echo "getValue方法";
            }
            public function setName($name='')
            {
                //代码块...
                echo get_called_class();
                echo "setName方法";
            }
        }
        $c_two = new child_two;

php中抽象类和接口的区别
把属性和方法封装起来就是类。
一个类的属性和方法被另外的类复制就是继承,PHP里面的任何类都可以被继承,被继承的属性和方法都可以被子类重新定义,这就是多态性。
抽象类和抽象方法:
1、所谓抽象方法就是只有名字的空“函数”,而且抽象方法必须是空方法。
2、所谓抽象类就是包含抽象方法的类,同时抽象类也可以包含普通方法。
3、因为抽象方法必须是空方法,所以任何子类在继承抽象类的时候,都必须重新定义抽象方法的具体内涵,才能实现实例化。
接口:
1、只包含抽象方法的特殊抽象类。
2、接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
3、接口中定义的所有方法都必须是公有,这是接口的特性。
4、要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
5、接口可以继承
列:

//创建A接口
       interface A
       {
            public function setName();
            public function getName();
       }
       //创建M接口
       interface M extends A
       {
            public function setValue();
            public function getValue();
       }

       //创建类
       //实现接口
       class B implements M
       {
            //实现接口A
            function setName(){

            }
            function getName(){

            }

            //实现接口M
            function setValue(){

            }
            function getValue(){

            }
       }

猜你喜欢

转载自blog.csdn.net/qq_38904347/article/details/83934116
今日推荐