一、面向对象理论

  1)面向对象概念

    面向对象编程(object Oriented Programming,OOP),是一种计算机编程构架,OOP达到软件工程的三个目标重用、灵活和扩展性。

  2)什么是对象?

    对象是系统中用来描述客观事物的一个实体,包含了若干变量和函数的一个软件集合。客观世界是由对象和对象之间的联系组成。

    (万事万物皆对象)

  3)什么是类?

    类是一组有相同属性和方法的一组对象集合。它属于该类的所有对象提供了统一的抽象描述。其内部包括属性和方法两个主要部分。

  4)类和对象的关系

    类和对象的关系就好比如模具和铸件的关系。类的实例化结果就是对象,而对一类的对象抽象就是类。类描述了一组有相同特征(属性)和相同行为(方法)的对象。

    属性:类的静态描述,相当于变量。

    方法:类的动态描述,相当于方法。

  5)类的定义 :        class 类名

    命名规则:驼峰式命名,首字母大写,如果多个单词,每个单词首字母大写

  demo:

  class car{

    public $color;//颜色,静态 属性,相当于一个变量

    //开动,动态,方法,相当于一个函数

    public function run(){

      echo "开车";

    }

  }

  $car1 = new car();//实例化得到一个对象,该对象拥有car类的属性和方法

  $car1->color="red";属性调用,对象->属性  这部汽车为红色,给color属性附上红色

  echo $car1->color //输出red;

  $car1->run();//方法调用  对象->方法

  在对象的外部访问成员的形式是 对象->成员 如果在对象内部则使用一个本对象的引用 "$this "每个对象都有一个对象的引用"$this "来代表这个对象,完成对象内部的调用

  大多数类都有一种统称为构造函数的特殊方法,当创建一个对象时,它将自动调用构造函数,也就是使用new关键字来实例化对象的时候就自动调用构造方法。

  构造函数的定义有两种

    1、与类名同名

    2、__construct();   php5后支持;推荐使用

  在一个类中只能有且一个构造方法,只有每次创建对象的时候去调用一次构造方法,不能主动调用,所以它通常执行一些有用的初始化任务,比如对成员属性的赋值等。

  与构造函数相对的就是析构函数,析构函数时PHP5新加的内容,析构函数允许在销毁一个对象之前执行一些操作和完成一些功能。比如说关闭文件、释放结果集等,其意义远不及构造函数。

  析构函数在对象所有引用都被删除或对象被显性销毁是执行

  析构函数的定义: __destruct();

  析构函数无法传参

二、继承和重载

  继承是面向对象的重要特性之一。继承是子类自动共享父类的数据结构和方法的机制。这是类之间的一种关系。子类可以再父类的基础上定义自己的属性和方法。

  通过继承机制,可以利用现有的数据类型来定义新的数据类型,所定义的新的数据类型不仅有新定义的成员,还拥有旧的成员。我们称已存在的用来派生的新类叫基类,又称为父类或超类,派生出来的新类称为派生类或子类。

  继承关键字:    extents

  单继承与多继承: PHP只支持单继承

  所谓的方法重载就是定义相同的方法名,严格来说php中的方法是不能重载的,这里说的重载方法是指子类覆盖父类已有的方法,一般又称为重写。

  在子类中,重写/覆盖从父类中继承过来的属性和方法

  多态

  在类中只要参数的个数或类型不同,方法可以重名,又称为多态。

  php不支持,只有强类型语言才可以实现。

  强类型语言:java c#等

  php无法实现多态、因为php是弱类型语言,与多态的概念冲突

类型的访问修饰符都成员的访问进行限制,分别有:

  public 公共的      同一个类中  类的子类  所有的外部成员

  protected 受保护的     同一个类中 类的子类

  private 私有的     同一个类中

重载的属性/方法 不能小于父类

public>protected>private

三、封装

  封装性把对象的成员属性和成员方法结合成了一个独立的相同的单位,并尽可能隐藏其内部细节,只保留可以对外有访问权限的方法和外部产生联系。

四、final关键字  

  final只能用来定义类和方法,不能定义属性

  使用final 关键字的类不能被继承,使用final 关键字的方法不能被子类覆盖,是最终版本。

  定义:final class 类名  、final public function 方法名();

面向对象(OOP)一的更多相关文章

  1. PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...

  2. 【PHP面向对象(OOP)编程入门教程】1.什么是面向对象?

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成 ...

  3. php面向对象(OOP)编程完全教程

    摘自:http://www.php-note.com/article/detail/41 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行P ...

  4. 拖拽系列二、利用JS面向对象OOP思想实现拖拽封装

    接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到 ...

  5. 面向对象(OOP)基本概念

    面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...

  6. python-面向对象-01_面向对象(OOP)基本概念

    面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...

  7. [Python_4] Python 面向对象(OOP)

    0. 说明 Python 面向对象(OOP) 笔记.迭代磁盘文件.析构函数.内置方法.多重继承.异常处理 参考 Python面向对象 1. 面向对象 # -*-coding:utf-8-*- &quo ...

  8. PHP面向对象(OOP)编程入门教程链接

    PHP官方学习OOP: http://php.net/manual/zh/oop5.intro.php 从其他博主学习:(以下链接来源: http://blog.snsgou.com/post-41. ...

  9. Python3中面向对象 OOP

    Python3中面向对象 OOP 定义: python中通过关键字 class 实现类的定义: class ClassName(object): pass 获取成员变量:ClassName.变量名 修 ...

  10. 如何吃透Python的面向对象(OOP)

    ​本篇可乐和大家一起来吃透 Python 的面向对象,类和实例. 面向对象(OOP) 解释:面向对象它是一种编程的思想,将现实事物抽象化为编程对象. 举例说明:喝可乐 ① 选择自己根据配方买对应的材料 ...

随机推荐

  1. Ubuntu使用crontab 使用举例

    除了这些固定值外,还可以配合星号(*),逗号(,),和斜线(/)来表示一些其他的含义:     星号          表示任意值,比如在小时部分填写 * 代表任意小时(每小时)   逗号      ...

  2. Python及R安装包版本查看方法

    R包查询 查询已安装的所有的包:library() 或installed.packages()(括号内为空,区别以上两项) 查询具体包的信息: help(package="pheatmap& ...

  3. Entity Framework Code-First(9.2):DataAnnotations - TimeStamp Attribute

    DataAnnotations - TimeStamp Attribute: TimeStamp attribute can be applied to only one byte array pro ...

  4. location.assign()、location.href、location.replace(url)的不同

    window.location.assign(url) : 加载 URL 指定的新的 HTML 文档. 就相当于一个链接,跳转到指定的url,当前页面会转为新页面内容,可以点击后退返回上一个页面. w ...

  5. 【转】log4j.properties 详解与配置步骤 - edward0830ly的专栏 - 博客频道 - CSDN.NET

    一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR 为严重错误 主要是程序的错误WARN 为一般警告,比如session丢失IN ...

  6. QueryString

  7. C#中的自动属性、隐式类型var、对象初始化器与集合初始化器、扩展方法

    1.自动属性(Auto-Implemented Properties) //以前的写法 .net2.0 private string _userName; public string UserName ...

  8. 《OD Docker实战》Docker从入门到精通

    一. 安装Docker http://wiki.jikexueyuan.com/project/docker-technology-and-combat/ https://mos.meituan.co ...

  9. Oracle 11g 数据类型

    1.     字符类型 数据类型 长度 说明 CHAR(n BYTE/CHAR) 默认1字节,n值最大为2000 末尾填充空格以达到指定长度,超过最大长度报错.默认指定长度为字节数,字符长度可以从1字 ...

  10. idea中使用Git对项目进行版本控制