PHP面向对象 三大特性
1.封装
目的:就是为了让类更加安全
做法:
1 要将成员做成私有的
2 在类里面做方法来间接访问成员变量
3 在方法里面加控制
简单的:
第一个魔术方法:给变量赋值的 __set
function __set($n,$v) 第一个参数变量名,第二个参数变量值
{
if($n=="age" ) 加限制条件
{
if($v>18 && $v<50)
{
$this->$n =$v;
}
}
else
{
$this->$n =$v;
}
}
$r->age =30; 自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数
第二个魔术方法:用来取变量值的 __get
function __get($n)
{
return $this->$n; 直接返回
}
echo $r->sex; 写这个的时候可以自动调用__get(),将变量名当做参数,没有提示,自己写出来用
$r = new Ren("男");
$r->__set("age",30);
$r->name ="张三"; 也可以
繁琐的:
class Ren
{
public $code; 人员代号
private $name; 人员姓名
private $sex; 人员性别
private $age; 人员年龄 做成了私有的,怎么实现访问
function __construct($s) 构造方法,用来初始化性别
{
$this->sex =$s;
}
造一个修改年龄的方法
function SetAge($a)
{
if($a>18 && $a<50); 加控制
{
$this->age=$a;
}
}
造一个获取age值得方法
function GetAge()
{
teturn $this->age;
}
}
造对象
$r = new Ren("男");
$r->SetAge(20);
var_dump($r);
例:
class Dog
{
public $name;
function Jiao()
{
echo $this->name."在叫";
}
function SetName($n)
{
$this->name =$n;
return $this; <----- 加了 连续去调 后期很多都是这种调用方式,返回该对象,继续调下一个
}
}
$d = new Dog();
$d->SetName("旺财")->Jiao();
2.继承
1 父类
2 子类 可以继承父类的一切
特点:单继承,一个子类只能有一个父类,一个父类可以派生多个子类
class Ren
{
public $name;
function Say()
{
echo $this->name."正在说话";
}
}
class China extends Ren extends <---- 实现继承
{
子类对父类的方法进行重写
function Say()
{
怎么在子类里调父类的成员
parent::Say(); 父类里面的内容拿过来
echo "你好";
}
function Run()
{
echo $this->name."正在跑步";
}
}
class America extends Ren
{
echo "hello";
}
$c = new China();
$c->Say();
$a = new America();
$a->Say();
var_dump($c);
override 重写
overload 重载
可以使类里面的某个方法产生多种效果,根据传入的参数不同可以执行不同的逻辑
重载也是多态的一种,编译多态
例:
echo rand(0,10); 随机数
echo date("Y-m-d"); 生成当前时间
3.多态
概念:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同,称为多态
条件
运行多态,在运行的时候出现的
1 要有继承
2 父类引用指向子类实例
父类引用:定义了一个变量 ,类型必须是父类的类型
$r = new Ren();
3 要有重写
4 调重写的方法
PHP面向对象 三大特性的更多相关文章
- [.net 面向对象编程基础] (11) 面向对象三大特性——封装
[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...
- [.net 面向对象编程基础] (12) 面向对象三大特性——继承
[.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...
- [.net 面向对象编程基础] (13) 面向对象三大特性——多态
[.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...
- 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...
- C++面向对象三大特性
面向对象三大特性 继承 public protected private public继承 public protected 不可见 private继承 private private 不可见 pro ...
- JAVA基础——面向对象三大特性:封装、继承、多态
JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...
- day20面向对象三大特性 , 类嵌套
#!/usr/bin/env python# -*- coding:utf-8 -*- # 1.简述面向对象三大特性并用代码表示."""封装:class Account: ...
- python 面向对象(三大特性)
python 面向对象(初级) (思维导图 ↑↑↑↑↑) 概述: 面向过程:根据业务逻辑从上到下垒代码. 函数式:将某功能代码封装至函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...
- python 面向对象三大特性(封装 多态 继承)
今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)注:Java和C#来说只支持面向对象编程,而python比较灵活即支持面 ...
- python面向对象三大特性
面向对象的三大特性: 封装.继承和多态 一.封装 封装,顾名思义就是将内容封装到某个地方,以后可以直接调用被封装到某处的内容. - 将内容封装到某处 - 从某处调用被封装的内容 第一步,将内容封装到某 ...
随机推荐
- 为什么LTE系统的最小时间单位是Ts?
之前一直在做LTE物理层相关的工作,一直有个疑惑, 在36.211开头的一章定义Ts的大小是1/(15000*2048)s,为什么定义这么一个奇怪的unit time. 最近才反应过来,这跟FFT/I ...
- android混淆那些事
写给Android开发者的混淆使用手册 综述 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆. 首先,这里说的的混淆其实是包括了代码压缩.代码混淆以及 ...
- 【洛谷·P2320】鬼谷子的钱袋
这道题很神奇 我们举一个例子,m=12 那么我们可以把它分成两部分,L和R: (1,2,,6)(7,8,,12) 我们可以发现R中的数都可以由12/2和左边的数组合得到 那么我们对L再分------ ...
- CM+CDH安装遇到的问题
1.实在是在安装CDH的时候无法安装成功的话,只有重新启动了,下面给大家分享一个神器,按照这个脚本应该差不多就能卸载干净,然后重新安装,写一个脚本,内容如下,救命的神器呀: #!/bin/bash s ...
- sublime text3使用小结
一.下载 http://www.sublimetext.com/2 sublime text2下载页 http://www.sublimetext.com/3 sublime text3下载页 ...
- sqlserver的IO性能检查
这一个月老被一个信息科科长纠缠,原因就是他们的sql server 2008 R2老是定期的写入性能低下.我是这样认为的,但身边的人似乎都不这么想.每每我对那个挂在一个交换机上的网络存储表达担忧时,这 ...
- winAPI 中 的 GlobalLock GlobalUnlock 的作用
在项目中遇到GlobalLock GlobalUnlock 这两个操作内存的函数. 百度百科解释为:锁定内存中指定的内存块,并返回一个地址值,令其指向内存块的起始处.除非用 GlobalUnlock ...
- (01背包变形) Cow Exhibition (poj 2184)
http://poj.org/problem?id=2184 Description "Fat and docile, big and dumb, they look so stupid ...
- Software Testing hw3
(a):可绘制出如下图所示的流程图 (b):对于测试用例t1=(n=3)和t2=(n=5),MAXPRIMES = 4时,t1不能检查出错误,而t2则会发生数组越界错. (c):要使测试路径不通过wh ...
- PHP自带Session隐患(session文件独占锁引起阻塞)
PHP自带Session隐患(session文件独占锁引起阻塞) PHP默认的会话处理器是session.save_handler = files(即文件).如果同一个客户端同时并发发送多个请求(如a ...