访问控制

  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. jquery定时刷新数据

    $(function () { setInterval("startRequest()", 3000); }); function startRequest() { $(" ...

  2. 使用C#系统服务定时执行操作

    1.新建项目 --> Windows 服务 2.Service1.cs代码 using System; using System.Collections.Generic; using Syste ...

  3. Bootstrap文本排版基础--Bootsrap

    1.排版前的基础 (1)移动设备优先 <meta name="viewport" content="width=device-width, initial-scal ...

  4. scala 读取文件遇到encode问题(Mac -> remote Linux)

    Source.fromFile(fileName)(enc: Encode),如果遇到错误: java.nio.charset.MalformedInputException: Input lengt ...

  5. Java 内存模型- Java Memory Model

    多线程越来越多的使用,使得我们需要对它的深入理解.那么就涉及到了Java内存模型JMM.JMM是JVM的一部分,JMM定义了一个线程修改了一个共享变量,其他线程什么时候或者如何看到这个变量,如何去访问 ...

  6. win10 UWP 显示地图

    微软自带的地图很简单 引用地图xmlns:Map="using:Windows.UI.Xaml.Controls.Maps" 写在<Page> 然后在Grid 用Map ...

  7. centos安装openoffice服务

    第一步:yum install openoffice.org-brand openoffice.org-core openoffice.org-java-common xvfb openoffice. ...

  8. 关于keyTyped

    蠢了,重写keyTyped方法时候拿keyCode去做比较....记一下....VK_UNDEFiEND.......

  9. Zernike不变矩

    1.Zernike矩介绍 Zernike矩是基于 Zernike多项式的正交化函数,所利用的正交多项式集是 1个在单位圆内的完备正交集.Zernike矩是复数矩 ,一般把 Zernike矩的模作为特征 ...

  10. 349B - Color the Fence

    Color the Fence Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Su ...