面向对象(OOP)一
一、面向对象理论
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)一的更多相关文章
- PHP面向对象(OOP)编程入门教程
面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...
- 【PHP面向对象(OOP)编程入门教程】1.什么是面向对象?
面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成 ...
- php面向对象(OOP)编程完全教程
摘自:http://www.php-note.com/article/detail/41 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行P ...
- 拖拽系列二、利用JS面向对象OOP思想实现拖拽封装
接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到 ...
- 面向对象(OOP)基本概念
面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...
- python-面向对象-01_面向对象(OOP)基本概念
面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...
- [Python_4] Python 面向对象(OOP)
0. 说明 Python 面向对象(OOP) 笔记.迭代磁盘文件.析构函数.内置方法.多重继承.异常处理 参考 Python面向对象 1. 面向对象 # -*-coding:utf-8-*- &quo ...
- PHP面向对象(OOP)编程入门教程链接
PHP官方学习OOP: http://php.net/manual/zh/oop5.intro.php 从其他博主学习:(以下链接来源: http://blog.snsgou.com/post-41. ...
- Python3中面向对象 OOP
Python3中面向对象 OOP 定义: python中通过关键字 class 实现类的定义: class ClassName(object): pass 获取成员变量:ClassName.变量名 修 ...
- 如何吃透Python的面向对象(OOP)
本篇可乐和大家一起来吃透 Python 的面向对象,类和实例. 面向对象(OOP) 解释:面向对象它是一种编程的思想,将现实事物抽象化为编程对象. 举例说明:喝可乐 ① 选择自己根据配方买对应的材料 ...
随机推荐
- ubuntu部署supersor
1.安装pip $ sudo apt-get install python-pip –y $ sudo pip install - -upgrade pip //升级pip 2.安装supervis ...
- [xdoj1158]阶乘求逆元(常用于求组合数)
http://acm.xidian.edu.cn/problem.php?id=1158 解题关键:此题注意将$\sum\limits_{i = 0}^x {C_x^iC_y^{i + k}}$转化为 ...
- mongodb操作数据集合
1.创建数据集: a.创建不设置参数的默认数据集(默认数据集自带一个流水id,_id) db.createCollection("mycol") //创建默认集合 b.创建指定参数 ...
- php学习笔记-php中把浮点数转化为整数
在php中有时候会遇到比如 14.6%3这种操作,php是会先把14.6转化为整数再做其它的操作,那么这个转化为整数的操作是floor(14.6)还是ceil(14.6)还是round(14.6)呢? ...
- Luogu 2258 [NOIP2014] 子矩阵
被普及组虐了,感觉
- java多线程有几种实现方法,都是什么?
转自:http://www.cnblogs.com/liujichang/p/3150387.html 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方法有两种, ...
- JsonPath的用法
有时候需要从json里面提取相关数据,必须得用到如何提取信息的知识,下面来写一下 语法格式 JsonPath 描述 $ 根节点 @ 当前节点 .or[] 子节点 .. 选择所有符合条件的节点 * 所有 ...
- LeetCode第14题:最长公共前缀
题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...
- JWT使用过程中遇到的问题
1.创建token的盐设置过于简单,出现secret key byte array cannot be null or empty. 异常 解决方法:jwt:config:key:hwy ------ ...
- GridView 高亮某一行
<script type="text/javascript"> $(document).ready(function () { $("#GridView tr ...