访问控制

  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面向对象的知识,敬请期待……

记PHP面向对象编程的更多相关文章

  1. 04面向对象编程-01-创建对象 和 原型理解(prototype、__proto__)

    1.JS中对象的"不同":原型概念 从Java中我们可以很好地去理解 "类" 和 "实例" 两个概念,可是在JavaScript中,这个概念 ...

  2. 面向对象编程 —— java实现函数求导

    文章目录 ★引子 ★求导 ★最初的想法 ★初步的想法 ★后来的想法 ★最后的想法 ★编程范式 ★结尾 首先声明一点,本文主要介绍的是面向对象(OO)的思想,顺便谈下函数式编程,而不是教你如何准确地.科 ...

  3. JavaScript学习笔记(十六)——面向对象编程

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  4. 面向对象编程 -------JavaScrip

    本文摘要:http://www.liaoxuefeng.com/ 一定明白面向对象的两个基本概念: 类:类是对象的类型模板,例如,定义Student类来表示学生,类本身是一种类型,Student表示学 ...

  5. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  6. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  7. PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程

    PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...

  8. Delphi_09_Delphi_Object_Pascal_面向对象编程

    今天这里讨论一下Delphi中的面向对象编程,这里不做过多过细的讨论,主要做提纲挈领的描述,帮助自己抓做重点. 本随笔分为两部分: 一.面向对象编程 二.面向对象编程详细描述 ------------ ...

  9. python基础-面向对象编程

    一.三大编程范式 编程范式即编程的方法论,标识一种编程风格 三大编程范式: 1.面向过程编程 2.函数式编程 3.面向对象编程 二.编程进化论 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 ...

随机推荐

  1. 最火的Android开源项目(一)

    摘要:对于开发者而言,了解当下比较流行的开源项目很是必要.利用这些项目,有时能够让你达到事半功倍的效果.为此,CSDN特整理了GitHub上最受欢迎的Android及iOS开源项目,本文详细介绍了20 ...

  2. Go语言备忘录:net/http包的使用模式和源码解析

    本文是晚辈对net/http包的一点浅显的理解,文中如有错误的地方请前辈们指出,以免误导! 转摘本文也请注明出处:Go语言备忘录:net/http包的使用模式和源码解析,多谢!  目录: 一.http ...

  3. Windows 10 16251 添加的 api

    本文主要讲微软最新的sdk添加的功能,暂时还不能下载,到 7月29 ,现在可以下载是 16232 ,支持Neon效果 实际上设置软件最低版本为 16232 就自动支持 Neon 效果. 主要添加了 A ...

  4. win10 uwp 打开文件管理器选择文件

    本文:让文件管理器选择文件,不是从文件管理器获得文件. 假如已经获得一些文件,那么如何从文件管理器选择这些文件? 使用方法很简单. 从网上拿图来说 打开文件夹自动选择所有文件 首先需要获得文件夹,因为 ...

  5. python第二课

    本节内容 1.列表list.切片 2.字典dict

  6. 视频加载logo

    最近工作需要,收集了一些视频卡顿或加载时的透明PNG图片.

  7. Java 中冷门的 synthetic 关键字原理解读

    看JAVA的反射时,看到有个synthetic ,还有一个方法isSynthetic() 很好奇,就了解了一下: 1.定义 Any constructs introduced by a Java co ...

  8. Android中的intent属性

    android之Intent的七大属性 2015年04月03日 ⁄ Android ⁄ 共 14866字 ⁄ 字号 小 中 大 ⁄ 1条评论 Intent用于封装程序的“调用意图”.两个Activit ...

  9. Spring框架学习之高级依赖关系配置(二)

    紧接着上篇内容,本篇文章将主要介绍XML Schema的简化配置和使用SpEL表达式语言来优化我们的配置文件. 一.基于XML Schema的简化配置方式 从Spring2.0以来,Spring支持使 ...

  10. Codeforces Round #203 (Div. 2)B Resort

    Resort Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Stat ...