PHP面向对象 ——封装和继承

面向对象的特征

  1 封装

  2 继承

  3 多态

封装

  封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节

  优点:信息隐蔽,封装即隐藏。

  封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的“交叉感染”,使软件错误能够局部化,大大减少查错和排错的难度。 

  类的封装性带来的优点:隐藏类的实现细节,让使用者只能通过事先定义好的方法来访问数据,可以方便的加入逻辑控制,进行数据检查,限制对属性的不合理操作。便于修改增强代码的可维护性

  //计算三角形的面积函数

  public function area($bottom, $height){

    return $bottom*$height/2;

  }

  如上的面积函数,我们只要把对应的参数底边长度和高度传递到该函数中,就可以得到计算的面积结果,至于具体的实现步骤和过程可以忽略,而由实现该面积计算功能的函数去处理。

  PHP 中通过将数据封装、声明为私有的(private),再提供一个或多个公开的( public)方法实现对该属性的操作,以实现下述目的:

    1.隐藏一个类的实现细节;

    2.防止对封装数据的未经授权的访问。使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;

    3.有利于保证数据的完整性;

    4.便于修改,增强代码的可维护性;

继承

  什么是继承?

    1.继承是面向对象最重要的特点之一,就是可以实现对类的复用。

    2.通过“继承”一个现有的类,可以使用已经定义的类中的方法和属性。

    3.继承而产生的类叫做子类。

    4.被继承的类,叫做父类,也被成为超类。

    5.PHP 是单继承的,一个类只可以继承一个父类,但一个父类却可以被多个子类所继承。

    6.从子类的角度看,它“ 继承( inherit , extends) ”自父类;而从父类的角度看,它“派生(derive)”

     子类。它们指的都是同一个动作,只是角度不同而已。

    7.子类不能继承父类的私有属性和私有方法。

  简单例子:动物------>狗

    class Animal{

      public $name=‘我是动物‘;

      public function getName(){

        return $this->name;

      }

    }

    class Dog extends Animal{

      public function __construct(){

        $this->name=‘这个是狗狗‘;

      }

    }

访问控制

  在 PHP5 中,可以在类的属性和方法前面加上一个修饰符( modifier),来对类进行一些访问上的控制

  

重写

  如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖( override),也称为方法的重写。

  当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称, 在 PHP5 中不限制输入参数类型、参数数量和返回值类型。(这点和 JAVA 不同)

  子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。

this

  PHP5 中为解决变量的命名冲突和不确定性问题,引入关键字“$this”代表其所在当前对象。

  $this 在构造函数中指该构造函数所创建的新对象

  在类中使用当前对象的属性和方法,必须使用$this->取值。

  方法内的局部变量,不属于对象,不使用$this 关键字取值。

parent

  PHP5 中使用 parent::来引用父类的方法。

  parent:: 可用于调用父类中定义的成员方法。

  parent::的追溯不仅于直接父类。

时间: 2024-10-27 01:08:53

PHP面向对象 ——封装和继承的相关文章

面向对象 封装 、继承

构造函数: 构造函数 - 创建一个类的函数 每一个类都有构造函数,访问修饰符必须是public的,并且不需要写任何返回值,方法名与类名一致 自己写的类 - 用户自定义类型如果要使用自定义类型产生出来的  对象  必须有一个实例化的过程 实例化格式:类型名  ss = new 构造函数(); 访问修饰符 -  4个 public - 公共的,任何地方都可以访问,但是需要引用 命名空间 private - 私有的,类的内部才可以访问 internal - 内部的,默认的,程序集中可以访问,程序集就是

PHP的面向对象 — 封装、继承、多态

K在上一次的基础篇中给大家介绍了一下关于PHP中数组和字符串的使用方法等,这一次,K决定一次性大放送,给大家分享一下PHP中面向对象的三大特性:封装.继承.多态三个方面的知识. 一.封装 在PHP中,封装可以用三个子来概括:私有化.具体来说,是通过访问修饰符,将类中不需要外部访问的属性和方法进行私有化处理,来实现访问控制. 那么封装的作用是什么?封装的作用主要有两点,一是方法封装,即将使用者关注的功能暴露,而隐藏其他使用者用不到的功能:二是属性封装,即对用户的数据进行控制,防止不合法的数据传输设

C#中面向对象——封装,继承,多态

摘要:提到面向对象就不得不说面向对象的三大特性,封装:继承:多态!下面还是通过图和例子的方式继续了解一下面向对象的三个核心! 下面还是通过具体的图进行分析: 通过代码来感受一下语法: class Program { static void Main(string[] args) { Fu f1 = new Fu(); f1.GetFu(); //父类就只能获取到父类的属性方法,是不能获取到子类的方法的 zi z1 = new zi(); z1.GetZi(); //子类既可以获取到子类的方法属性

面向对象封装与继承

面向对象: (1)面向过程 强调过程,执行者:它是一种更符合人们思考习惯的思想: (2)面向对象 强调对象,指挥者:它使复杂的内容简单化: (3)面向对象思想的特点:它使我们从执行者变成了指挥: 面向对象方法的主要优点是:符合人们通常的思维方式:从分析到设计再到编码采用一致的模型表示,具有高度连续性:软件重用性好. 面向对象的写法: 初始化对象 面向对象的特点: 封装:继承:多态 封装,有参构造方法. 无参构造方法 类和对象: 对于同一类事物可以抽取它们的共性的内容,定义在类中.如生活中的汽车,

面向对象封装、继承、多态

一.面向对象封装 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 02. 小明跑步案例 需求: 小明 体重 50公斤 小明每次 跑步 会减肥 1公斤 小明每次 吃东西 体重增加 0.5 公斤 class Person(object): def __init__(self, name, weight): self.name = na

面向对象 封装、继承

一.封装 目的:保护类,让类更加安全.做法:让类里面的成员变量变为私有(即访问修饰符)的,做相应的方法或者属性去间接的操作成员变量 ※访问修饰符private 私有的              只能在该类中访问protected 受保护的       只能在该类和它的子类中访问public 公有的                在任何地方都可以访问 封装成员方法来间接操作类里面的成员变量 例: class Ren { private string name; private int age; /

面向对象(封装、继承、多态、抽象)

封装--封装主要是基于类的属性,本类中的属性私有化,即有private修饰词来加以修饰,生成GET,SET方法来给外界调用. 继承--java继承是面向对象的最显著的一个特征.继承是从已有的来中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力. 多态--java的多态是指对非静态方法的多态,父类的引用来调用子类的方法. 抽象--使用关键词abstrace声明的类叫做"抽象类".如果一个类里包含了一个或多个抽象方法,这个类就指定为抽象类."抽象方法"

面向对象--->封装和继承

封装封装指在实际实现时,将复杂的内部结构隐藏起来,并为这组复杂的结构取一个统一的名称进行使用.在现实世界中,大量的存在封装的例子,例如电脑的硬盘,将多组复杂的线路和存储信息的磁片封装起来,并将该组结构取名为硬盘,以后就可以使用硬盘来代表该结构,而不需要更多的了解内部的信息.在面向对象技术中,类是典型的封装性的体现,类将一组属性和功能组合成一个统一的结构,并使用类名来代表该结构.封装性的最大优势在于隐藏每个类的内部实现(内部结构),从而既方便项目的分解也降低了项目的难度.例如以设计汽车为例,我们可

Javascript面向对象(封装、继承)

Javascript 面向对象编程(一):封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果我们要把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做呢? 一. 生成实例对象的原始模式 假定我们把猫看成一个对象,它有"名