• 记PHP面向对象编程


    访问控制

      public(公开的):可以在类中、子类中、类外访问。

      protected(受保护的):只能在类本身及子类中访问。

      private(私有的):只能在声明他们的类中进行访问,私有的类成员不能被子类或者这个类的对象实例直接访问

    抽象类和方法

      在继承概念被应用在一些场景中,创建一个父类的实例将会显得不怎么合适。在这种情况下,如果将父类定义为一个抽象基类,而不是标准的基类,会显得更加合适(抽象类不能被实例化)。

      抽象类定义了这个基类的继承类(子类)中的一些方法。然后子类会负责定义这些方法的真正的实现。

      抽象类和普通类的区别在于,如果试图从抽象类创建一个对象将会出现一个致命错误,抽象类就是被用来扩展的,然后我们就可以创建这些派生类的实例。

      抽象类和方法的定义:

    //抽象类的定义从abstract关键字开始
    abstract class People{
        protected $name = "";
    
        //抽象方法以abstract开始,并且抽象方法没有方法体,以分号结束
        abstract public function setName($name);
        
    }
    
    //子类中实现抽象类的方法
    class Teacher extends People{
    
        public function setName($name){
            $this->name = $name;
        }
    }

      注意:

      1.在子类里实现抽象方法的时候,其可见性必须高于或等于抽象方法的定义的可见性。如果抽象方法是公开的(public),子类里的实现方法也必须是公开的。如果抽象方法是受保护的(protected),那么子类将只能是受保护的或者公开的。

      2.我们不能将抽象方法定义为私有的(private),因为一个私有的方法不能够被继承

      3.在所有情况下,方法的实现版本也必须和抽象方法具有一样数目的参数(函数签名要一致)。

      4.子类中必须实现基类中所有的抽象方法,否则将会出现一个致命错误。

      5.属性没有抽象一说,抽象类中的属性定义为正常属性,子类也可以覆盖抽象类中的属性,此时属性的可见性设置与抽象方法是一致的(见第1条)。

      本章博客会不定期更新所有有关PHP面向对象的知识,敬请期待……

  • 相关阅读:
    组件之间通信(父传子)
    flex布局
    ffmpeg解析TS流(转)
    swift之?和!的含义(转)
    Swift之画圆角添加多个枚举值方法
    swift之singleton
    swift之闭包
    Swift之fallthrough
    Selector
    Settings Bundle
  • 原文地址:https://www.cnblogs.com/praglody/p/6725373.html
Copyright © 2020-2023  润新知