PHP------面向对象的特性
面向对象的特性
一、面向对象有三大特性:
封装、继承、多态。(非常重要,第一要记住!!!!!!!!!!)
二、封装
封装就是用来做类的,把一个类封装起来。做类不能随便的做。我们做类不能随便去写一个类,随便写一个类之后,别人可以在外界,通过对象就可以直接调用我们里面的成员,直接操作我们里面的成员,这样的话对于我们的类来讲,如果外界的直接操作我们的成员,那我们的这个类的安全性就低了,就说明我们做的这个类不安全了,外界可以随便访问,就不安全了,另外,类如果随便写写,直接拿对象直接调用,里面的成员属性或者成员变量,我就可以给它随便赋值,比如本来这个变量应该存的是整数,我给他赋了一个字符串,这样的话,这个类就乱了。
所以,封装的特性,
目的:让类更加安全
做法:不让外界直接访问类的成员
如何使类更加的安全的,具体做法:
【1】 让成员变为私有
class Ren//定义一个人类
{
var $nianling; //它有一个年龄。这个年龄我不让外界直接访问,我要把它变成我这个类私有的。怎样变?就要用到访问修饰符。
}
访问修饰符,有三种:
(1) public 公有的(所有的地方都可以访问的)
(2) private 私有的(只有这一个类里,可以访问的到。它子类也访问不到)
(3) protected 受保护的,(受保护的在什么情况下可以访问的到呢?在该类,还有它的子类里面可以访问的到)
也就是说,这三个,代表了三个权限。
所以,把成员变为私有的怎么变呢??
就是把var去掉,换成访问修饰符private
例子:
class Ren
{
Private $nianling; //私有成员。。现在$nianling就成了私有成员(私有成员外界是访问不到的)。
怎样访问不到呢??
$r=new Ren()
Echo $r->$nianling; //我要访问这个里面的$nianling;的变量
我把它变为私有的了,还能访问的到吗??
}
例子:

显示结果:

显示结果报错了。 这个变量是个私有的,没法取访问它。
【2】 第二步:造成员方法,来操作变量
既然有nianling 它就肯定要求外界去操作它,给它赋年龄或取年龄,您如果让别人访问不到,这个nianling 就没有任何意义了。这nianling 还必须让别人访问的到,但是又不能直接访问,所以第二步就是:造成员方法,来操作变量。因为我第一步把它变成私有的了,就没法直接访问了,怎么办??要让它有意义就必须访问到,我就要造一个方法去它访问了。所以,第二步就是造一个方法。
这个方法必须是一个公有的方法,公有的方法可以加public,也可以不加public,默认的您如果不加访问修饰符默认的就是public,所以可以加public,也可以不加,加上也没有错误。
class Ren
{
Private $nianling;
Public function SetAge($a)//做一个方法,去给$nianling 赋值 // SetAge 方法名 SetAge()要求用户传入一个值$a
{
$this->nianling =$a; //通过这个方法就可以赋给$nianling了
//然后,在这个方法的里面,把这个值交给$mianling 的变量
// 在这个里面$this->nianling =$a; 为什么能访问的到nianling?????因为这是在这个类里面(在该类中可以访问到)
//这样就把a的值赋给$nianling的变量了,通过这个方法就可以赋给$nianling了
}
}
$r=new Ren();
$r->SetAge(18);//调用方法给nianling赋值 // SetAge方法
Var_dump($r);//输出对象,看看这个值有没有赋进去
PHP------面向对象的特性的更多相关文章
- [.net 面向对象编程基础] (11) 面向对象三大特性——封装
[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...
- [.net 面向对象编程基础] (12) 面向对象三大特性——继承
[.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...
- [.net 面向对象编程基础] (13) 面向对象三大特性——多态
[.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...
- 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...
- Object Pascal 面向对象的特性
2 面向对象的特性 在软件系统开发过程中,结构分析技术和结构设计技术具有很多优点,但同时也存在着许多难以克服的缺点.因为结构分析技术和结构设计技术是围绕着实现处理功能来构造系统的,而在系统维护和软件升 ...
- C++面向对象三大特性
面向对象三大特性 继承 public protected private public继承 public protected 不可见 private继承 private private 不可见 pro ...
- J2SE基础:4.面向对象的特性一
面向对象的特性 封装 继承多态 封装: 定义: 通过对象的封装,实现了模块化和信息隐藏. 通过对类的成员施以一定的訪问权限,实现了类中成员 的信息隐藏 注意点: 对象自已该做的一些事情与方法不能交与其 ...
- TypeScript 学习四 面向对象的特性,泛型,接口,模块,类型定义文件*.d.ts
1,面向对象的特性一:类,继承,见上一篇博客: 2,面向对象的特性二: 泛型(generic):参数化的类型,一般用来限制集合的内容:指定只能放某个类型的元素 如下图中的尖括号中的Person,就代表 ...
- JAVA基础——面向对象三大特性:封装、继承、多态
JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...
- day20面向对象三大特性 , 类嵌套
#!/usr/bin/env python# -*- coding:utf-8 -*- # 1.简述面向对象三大特性并用代码表示."""封装:class Account: ...
随机推荐
- js&&jQuery实现省市区三级联动
代码参考了:https://codepen.io/anon/pen/WzyNQB;根据自己的需要修改了一下,挂个出处 1.前端页面代码 <html> <head> <me ...
- jvm options
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#Options Categories of J ...
- fabu dao fenleizhong
IsAggregated IsAggregatedIsAggregated IsAggregatedIsAggregated IsAggregatedIsAggregated IsAggregated ...
- Spring Cloud实战之初级入门(五)— 配置中心服务化与配置实时刷新
目录 1.环境介绍 2.配置中心服务化 2.1 改造mirco-service-spring-config 2.2 改造mirco-service-provider.mirco-service-con ...
- poi-word导出,导出多图片到word
一.添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratc ...
- poj 1155 树形背包
http://blog.csdn.net/libin56842/article/details/9908199 树形背包: 首先是建树,每个结构体为一个节点,包括下一个点序号,值,和next. tre ...
- Windows Server 2008 R2 搭建网站详细教程
转自:http://jingyan.baidu.com/album/642c9d34098bf5644a46f71f.html?picindex=4 网上都有一些Windows Server 2008 ...
- JBPM学习第1篇:入门与安装
1.相关关键词 BPM:全称Business Process Management,即业务流程管理 BPEL:全称为Business Process Execution Language,即业务流程执 ...
- 20个实用的javascript技巧及实践(一)
在本篇文章中,我们将会向大家分享JavaScript开发中的小技巧.最佳实践和实用内容,不管你是前端开发者还是服务端开发者,都应该来看看这些编程的技巧总结,绝对会让你受益匪浅的. 文中所提供的代码片段 ...
- cf1043D. Mysterious Crime(枚举)
题意 题目链接 给出\(m\)个长度为\(n\)的排列,问有多少连续公共子串 \(m \leqslant 10, n \leqslant 10^5\) Sol 非常naive的一道题然而交了3遍才过( ...