一、面向对象理论

  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. sklearn实现聚类

    import numpy as np from sklearn import datasets from sklearn.cross_validation import train_test_spli ...

  2. AT指令集

    通用指令 at+cala   设置警报日期和时间 at+cgmi  厂家认证请求,返回模块厂家信 at+cgmm 模式认证请求,返回模块使用频段 at+cgmr 修正认证请求,返回软件版本 at+cg ...

  3. BMFont使用图片自定义字体(无需字体文件)

    网上搜BMFont做字体,很多都是从一个字体文件读取,然后选择需要的字,然后保存成图片文字,这个对于一般的文字的确很实用,因为Unity本身不支持中文,所以只好这样了. 但是做过游戏的都知道,策划总是 ...

  4. Cactus详细讲解

    Cactus建议一年以上有经验的人玩,刚入门MVC,不了解下列组件请先自行学习,切勿好高骛远. Cactus的组成(基于.net4.5.2):Dapper+MVC4+autofac 前端css框架pu ...

  5. sqlserver2012——游标

    游标:一种数据访问机制,允许用户访问单独的数据行而不是对整个行集进行操作.用户可以通过单独处理每一行逐条收集信息并对数据逐行进行操作,这样可以将降低系统开销. 游标主要有以下两部分: 游标结果集:由定 ...

  6. Boost Python官方样例(三)

    导出C++类(纯虚函数和虚函数) 大致做法就是为class写一个warp,通过get_override方法检测虚函数是否被重载了,如果被重载了调用重载函数,否则调用自身实现,最后导出的时候直接导出wa ...

  7. vue中通过cross-env插件配置三种环境(开发,测试,生产)打包,不用切换api

    1. 话不多说,第一步就是安装必要的插件 npm install cross-env --save 2.修改config里面的参数,这里只展示一个test,其他类似 3.修改package.json ...

  8. 解决运行Robot Framework报‘’ascii’错误

    在Python27\Lib\site-packages中新建‘sitecustomize.py’,内容如下: #coding=utf8import sysreload(sys)sys.setdefau ...

  9. 洛谷P1967 货车运输

    题目描述 \(A\)国有\(n\)座城市,编号从\(1\)到\(n\),城市之间有\(m\)条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有\(q\)辆货车在运输货物, 司机们想知道每辆车在 ...

  10. sqllocaldb 的使用记录

    sql脚本是一个文件大约也就几MB,要是有一种文件存储数据就好了,后来了解到了sqllocaldb,但是没有深入研究大概知道有这么一个东西.这次翻出来还是自家小姑姑要做winfrom但是苦于sqlse ...