面向对象继承以及常见特性

继承特性:

  • 继承的格式:
    • class 类名 extends 父类名{
                 …….代码….
  • 概念:
    • 父类:被其他类继承的就是父类,也叫做基类
    • 子类:继承其他类的类就是子类,也叫做派生类
  • 特点:
    • 子类继承父类既具备父类中所有的成员属性和方法(私有的除外)
    • 子类继承父类之后可以具有子类独有的属性和方法
    • 在继承时,子类中允许出现和父类同名的方法,这种情况不会冲突,而是子类的方法会覆盖父类的方法,这种方式叫做重载
    • 魔术方法也可以被子类继承
    • 如果父类具有构造方法,子类也需要高作方法进行构造成员属性,此时需要子类中重载父类的构造方法,并且在构造方法中使用parent::__construct();进行调用父类构造方法,构造继承而来到父类的成员属性
    • 继承要有逻辑关系,尽量做到不乱继承
  • php是单继承语言,其他语言多为多继承


访问类型控制

  • private:除了类本身内部可以访问,其他地方都不能访问
  • protected:类本身内部以及继承的子类可以访问,其他地方不能访问
  • public:任何地方都可以访问

封装等级:

子类同名的方法封装等级必须大于或者等于父类的封装等级


var 是封装关键字,但是它不是一个标准的封装关键字,一般用于测试和学习 只能修饰成员属性 不能修饰成员方法


常见的关键字

  • final
    • 用于修饰成员方法
    • 用于修饰类
    • 禁止在子类中重载父类的方法
    • 被修饰的类无法被继承
  • const
    • 作用:用于在类中声明常量,这种常量是类中的常量(类中的常量不归对象所有,而是归类所有)
    • 在类中声明常量使用const关键字
    • 声明常量时需要给常量赋值
    • 声明常量归类所有而不是归任何对象所有
    • 类中常量的访问方式
      • 类的外部
        • 类名::常量名
      • 类的内部
        • 类名::常量名
        • self::常量名
    • self表示当前类
    • $this表示当前对象
  • static
    • 在类中使用static声明的成员都是静态成员
    • 静态成员的特征是:不归对象所有,而是归类所有
    • static关键字,既可以修饰成员属性,也可以修饰成员方法
    • static声明的成员都是归类所有,而不是归对象所有,在没有对象的情况下,可以通过类来访问
    • 能声明静态的成员就是需要声明静态等成员,效率高
    • 具有动态成员的方法不可以声明为静态成员方法
    • 如果方法中没有$this存在,那么这个方法实际上已经是一个静态方法(php版本>5.3以后要求写上static关键字)


静态成员访问

  • 类内部:
    • 类名::$静态成员属性名
    • self::$静态成员属性名
    • 类名::静态成员方法名();
    • self::静态成员方法名();
  • 类外部
    • 类名::$静态成员属性名
    • 类名::静态成员方法名()
    • 对象->静态成员方法名();(一般不用)

posted on 2018-07-26 17:15  nothingMan  阅读(115)  评论(0)    收藏  举报