• 面向对象之类的继承;重写;重载;最终形态;设计模式;抽象类,抽象方法,接口’


    类的继承

    1. a类拥有b类的所有特性,并且还可以拥有一些自己的特性;就可以实现a类继承b类,并在这个基础上追加一些特性;
    2. 继承:一个类从另一个已存在的类中获取其特性就是继承  (从父类的角度看)
    3. 派生:从一个已有的类中产生一个新的类,称为派生;(从子类的角度看)
    4. 子类和父类的定义: 本身被继承的类称之为父类(又叫基类),继承别的类来获取特性的类称之为子类(派生类)
    5. 单继承:一个子类只能继承一个父类的特性  大多数语言都是单继承;c++是多继承
    6. 扩展:扩展就是一个子类继承完特性后,再定义本身的属性,没有拓展继承就没有意义

    访问权限的修饰符

    Public  公共的;在本类,继承关系的类,和类外都能用

    Protected  受保护的:在本类和继承关系的类都能使用

    Private  私有的:只能在本类中使用;

    关键字

    Self  指类本身;

    $this 也是指类本身;

    Parent 指父辈;

    Static 定义静态属性,方法时使用;

    abstract 创建抽象类和抽象方法时使用

    构造和析构方法在继承中的表现

    构造方法:

    1. 在子类中没有定义构造方法时,会调用父类的构造方法,调用父类的构造方法时要按照父类的调用方式来;
      2. 子类定义了构造方法时,优先调用子类的,也可以手动调用父类的构造方法;(parent::__construct();

    3.通常情况下,都会调用父类的构造方法来节约代码

    4. 上三条构造方法同样适用于析构方法

    重写 override

    .

    重写又叫覆盖,子类继承父类的方法和属性重新“定义”就是重写;

    重写时,子类的所有属性和方法必须和父元素的相等,在通过子元素调用和父元素相等的属性或方法时,会以子元素的为准

    二.

    访问控制权限

    下级的访问控制权限应该不低于上级的访问控制权限:

    上级:public  下级:只能public

    上级:protected  下级: protected, public

    上级:private   下级:private  protected  public——实际此情况无意义。

    私有的不能覆盖,而是完全当作自己全新的。

    三.

    1. 构造方法的重写,可以像普通方法一样重写,而且参数还可以不一致
    2. 父类私有权限的属性和方法是不能被覆盖的,但是子类通过编辑相同的方法和属性来重写;但方法的参数必须一致;

    最终

    最终类:

    最终类就是代表不能被继承的类

    形式:

    final  class  类名{ 。。。。类定义。。。。}

    最终方法

         最终方法是不能被覆盖和重写的

    形式:

    final  function  方法名(){。。。。方法定义。。。。}

    设计模式

    主要指一些事情的处理经验,不同的解决方法也可以称之为不同的设计模式

    1.工厂模式

    通过一个类,来实现传不同的参数,实现不同的实例化对象就可以称这个类为工厂;而这个工厂的作业就是产出不同的对象

    2.单例模式

    根据不同的要求,某个类只能被实例化对象一次,就是单例模式;

    单例模式有一个三私一功;两个私有方法,一个私有属性,一个公用方法

    抽象类

    1.抽象类就是在类定义时,class前面加abstract这个关键字,这个类就是一个抽象类;

     2.抽象类的主要作用就是用来当做父类的

     3.抽象类的定义abstract  class  类名{.....类的定义.....}

     4.抽象类的里面主要就是一些子类的共有属性和共有方法,用抽象类来继承

    抽象方法

    1.抽象方法是配合抽象类来规范子类的写法;定义时也是需要加abstract这个关键字

    2.抽象方法的定义abstract  function  f1($x1, $y, $m)//注意,后面一定有分号。

    3.抽象方法就是要求下级,也就是子类要怎么做的

    抽象类和抽象方法的细节描述

    1.如果一个方法是抽象方法,那么这个类也必须是抽象类

    2.一个抽象类中有或没有抽象方法并没有多大关系,但通常对于这个抽象类来说意义不大

    3.一个子类继承抽象类后,必须全部重写抽象类的抽象方法,除非这个子类也是个抽象类

    4.子类实现抽象父类的方法时,访问控制修饰符的范围不能降低,且方法的参数也须一致——其实这就是重写,所以要满足重写的要求。

    PHP中的重载技术

    其实就是同一个方法名中有个数不同的参数,参数不同可以是个数不同,参数不同,顺序不同,但是php中不能重复定义同一个方法,会报错;

    所以PHP中的重载是另外一种定义:

    属性重载: 如果使用一个不存在的属性,就会去自动调用类中预先定义好的某个方法以处理数据;

    方法重载: 如果使用一个不存在的方法,就会去自动调用类中预先定义好的某个方法以处理该行为

    属性重载:

    如果某属性不存在,但在语法中使用如下情形,则会发生:

    取值:$v1 = 对象->属性; ===>自动调用类中的__get()方法

    赋值:对象->属性 = XX值; ===>自动调用类中的__set()方法

    判断是否存在:isset(对象->属性;) ===>自动调用类中的__isset()方法

    销毁:unset(对象->属性;) ===>自动调用类中的__unset()方法

    前提都是:类中要预先定义好这些方法。

    方法重载:

    当使用一个对象调用一个不存在的普通方法的时候,会自动去调用预先定义好的"__call"方法。

    上面所学的几个方法都被称为“魔术方法”:

    __get(), __set(),  __isset(), __unset(),  __call(),  __callstatic();

    接口:

    类:有属性,有方法;有类常量;

    抽象类:有属性,有方法;有类常量; 还可以有抽象方法(只有方法头)

    “更”抽象类(就是接口) :有接口常量;还可以有抽象方法(只有方法头)

    接口简单来说就是抽象类的集合体,来规范抽象类的写法;

    接口可以实现“多继承”(多实现),而类不行。

    一个类只能继承一个父类,但可以实现多个“上级接口”,语法形式:

    class  A  extends  B  implements  接口1,接口2.... { 。。。类定义语句。。。}

    一个接口同样可以继承另一个接口(也是单继承):

    interface  接口1  extends 接口2  {接口定义}

  • 相关阅读:
    Javascript 计时事件说明
    结合RibbonControl设计MDI窗体,在子窗体关闭后,顶部显示额外的控制栏残影
    交叉验证[转]
    [转载】我的数据挖掘之路 by wrchow
    《这些道理没有人告诉过你》摘记
    2017BUAA软工第0次作业
    SSM框架+slf4j 以Gradle实现
    RMQ(ST算法)
    博客园装饰
    【转载】UVa 11464 Even Parity 偶数矩阵
  • 原文地址:https://www.cnblogs.com/baobaoa/p/9142713.html
Copyright © 2020-2023  润新知