//面向过程

//类和对象
//对象:任何东西都可以成为对象,类实例化出来的东西
//类:对所有同类的对象抽象出来的东西 //info:code,name,sex,nation,birthday
//对象:一条具体的信息:p001,张丹,女,汉,1990-12-04 //定义类
class Ren
{
public static $class;
private $Name; //成员变量
private $age;
private $height;
var $sex;//一般不要给成员变量赋值
const π=3.1425926;//将某些类里面常用的 定义为常量 static function test()//静态方法
{
echo self::$class;
echo "静态方法";
}
function __construct($s)
{
$this->sex= $s;
} function Run()//成员函数(方法)
{
echo "这个人正在奔跑";
}
function Say()
{
echo self::$class;
//echo $Name."正在说话";//错误写法
echo $this->Name."正在说话";//正确写法,$this表示该对象
}
function __destruct()//析构函数,对象销毁前执行
{
echo "该对象销毁了";
}
/*function SetAge($a)
{
if($a>10 && $a<50)
{
$this->age=$a;
}
}
function GetAge($a)
{
if($a>10 && $a<50)
{
$this->age=$a;
}
}*/ function __set($name,$value) //对类里面的私有成员进行赋值的魔术方法
{
$this-> $name=$value;
if($name=="age" && $value>20 && $value<50)
{
$this->age=$a;
} }
function __get($Name) //对类里面的私有成员进行取值的魔术方法
{
return $this->$Name;
}
}
//使用类
//1.实例化对象
$r=new Ren("男");
//2.给成员变量赋值(调用成员变量)
$r->Name='张良';//给对象的name赋值
//var_dump($r);
//3.调用成员方法
$r->Run();//执行成员方法
//访问修饰符
//1.如果要加访问修饰符,要去掉var
//2.三种:public公有的,protected受保护的,private私有的
//3.如果不加访问修饰符,默认是共有的 //$this引用
$r->Say();
//$this表示该对象(哪个对象调用) ,不是代表该类 //构造函数
//function__construct()
//{
//}
//1,写法特殊
//2.执行特殊,再造对象时自动执行
//作用:对对象做初始化操作 //面向对象三大特性
//封装,让类更加安全
//做法:1.把成员变量变成私有的
//2.做一个方法来实现变量的取值和赋值,加一些限制条件
$r->SetAge(40);
//取age值的方法
echo $r->GetAge();
//使用魔术方法
$r->name ="李思";//执行该语句会自动调用__set方法
//__set() 特点:会自动执行,把赋值语句中的变量名作为第一个参数,把变量值作为第二个参数调用__set方法
//__get() 特点:会自动执行,把取值语句中的变量名作为参数调用__get方法 //继承
//概念:如果一个类有子类,那么该子类会继承父类的一切东西(不包括私有成员)
//在定义子类的时候需要加一个关键字 extends
//特点:单继承,一个儿子只能有一个父亲,一个类只能一个父类
//如果父类中有构造函数,子类在实例化的时候要按父类构造函数的标准来实例化
//子类对父类的方法的重写,在子类里写一个同样的方法
//final:用来修饰类,代表该类是一个最终类,该类无法被继承
class Test extends Ren
{ public $birthday;
function Run()
{
echo "running";
}
function Say()
{
parent::Say();//调用父类的Say()方法,parent只能在子类中使用
echo "saying";
}
} $t=new Test("女");
$t->__get();
$t->Say();
//静态成员
//普通成员是属于对象的,不是属于类的 (调用的时候是用对象调用)
//什么叫静态的:类静态成员是属于类的,不是属于每个对象的
//定义静态成员用static关键词修饰
//静态方法里面不能调用普通成员
//静态方法调用静态成员,要使用self关键词
//self表示该类 $this表示该对象
//普通方法里面可以调用静态成员
Ren::$class="0305";//访问静态成员
echo Ren::$class="0305"; //多态
//概念:当父类引用指向子类实例的时候,由于子类对父类函数进行了重置,导致我们在使用该引用去调用相应的方法表现出的不同
//条件:必须有继承
//2.子类必须对父类的方法进行重写 class Rene
{
public $name;
public $sex;
function Say()
{
echo "你好a ";
}
function Say($a)
{
echo $a."你好a ";
}
function Say($a,$b)
{
echo $a.$b."你好a ";
}
function __tostring()//输出类的描述
{
return "这个对象包括变量name和sex,一个say方法";
}
function __clone()//克隆对象时自动执行
{
$this->name="事发后";//this 指副本 (克隆出来的新对象)
}
}
class China extends Rene
{
function Say()
{
echo "你好";
}
} $q=new Rene();
$q1=new China(); //函数重载
//2.函数里面参数的个数不同
//3.如果个数相同,类型不同
$r=new Rene();
$r->Say(); //PHP是弱类型语言,所以没有重载
//PHP有可变参数的函数 //__tostring() //对象的克隆
$r=new Rene();
$r->name="福建"; $r1=clone $r;//克隆对象
echo $r->name;
echo $r1->name; var_dump($r1); ?>

PHP 对象及其三大特性的更多相关文章

  1. OC学习6——面相对象的三大特性

    我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这也是面向对象的三大特征.OC学习篇之---类的三大特性(封装,继承,多态) 1.封装(Encapsulation)是指将对象的状态信息 ...

  2. 浅谈python的对象的三大特性之继承

    前面我们定义了人的类,并用这个类实例化出两个人jack和lily,查看了它们的内存空间. 现在我们再来看看类中所存在的对向对象编程的三大特性之继承的一些特性. 前面定义了一个人的类,可是我们还知道,人 ...

  3. python面向对象(类和对象及三大特性)

    类和对象是什么 创建类 新式类 和 经典类 面向对象三大特性 继承 封装 多态   面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  4. IOS开发学习笔记010-面向对象的三大特性

    面向对象的三大特性 1.封装 2.继承 3.多态 一.封装 将类内部的属性保护起来,在外部不能直接访问,那么如果需要访问怎么办呢? OC提供了set方法来对成员变量进行访问 set方法 1.作用:提供 ...

  5. python学习之对象的三大特性

    在面向对象程序设计中,对象可以看做是数据(特性)以及由一系列可以存取.操作这些数据的方法所组成的集合.编写代码时,我们可以将所有功能都写在一个文件里,这样也是可行的,但是这样不利于代码的维护,你总不希 ...

  6. 对象的三大特性(封装、继承、多态)——java

    一. 面向对象的三大特征 1. 封装---->减少了大量的冗余代码---->封装将复杂的功能封装起来,对外开放一个接口,简单调用即可.将描述事物的数据和操作封装在一起,形成一个类:被封装的 ...

  7. 浅谈python的对象的三大特性之封装

    我们家里都有电视机,从开机,浏览节目,换台到关机,我们不需要知道电视机里面的具体细节,只需要在用的时候按下遥控器就可以完成操作,这就是功能的封装. 在用支付宝进行付款的时候,只需要在用的时候把二唯码给 ...

  8. Python:Day24 类、类的三大特性

    Python有两种编程方式:函数式+面向对象 函数式编程可以做所有的事情,但是否合适? 面向对象: 一.定义 函数: def + 函数名(参数) 面象对象: class  bar--->  名字 ...

  9. Java面向对象——三大特性

    Java面向对象——三大特性 摘要:本文主要介绍了面型对象的三大特性. 封装 什么是封装 封装,就是指一个类隐藏了对象的属性和实现细节,对自己的数据和方法进行访问权限控制,只允许某些类和对象进行访问和 ...

随机推荐

  1. ffmpeg 命令

    1.保存文件: ffmpeg -i rtsp://admin:12345@172.29.61.108/Streaming/Channels/1 -vcodec copy -acodec libvo_a ...

  2. Invalid object name ‘sys.configurations’. (Microsoft SQL Server, Error: 208)

    http://blogs.msdn.com/b/ramaprasanna/archive/2009/09/16/invalid-object-name-sys-configurations-micro ...

  3. Dijkstra--POJ 2502 Subway(求出所有路径再求最短路径)

    题意: 你从家往学校赶,可以用步行和乘坐地铁这两种方式,步行速度为10km/h,乘坐地铁的速度为40KM/h.输入数据的第一行数据会给你起点和终点的x和y的坐标.然后会给你数目不超过200的双向地铁线 ...

  4. shell编程之echo命令

    Linux echo命令不能显示文件中的内容.显示字符串或者变量功能说明:显示文字.语 法:echo [-ne][字符串]或 echo [--help][--version]补充说明:echo会将输入 ...

  5. 【BZOJ】【1004】【HNOI2008】Cards

    Burnside/Polya+背包DP 这道题目是等价类计数裸题吧……>_> 题解:http://m.blog.csdn.net/blog/njlcazl_11109/8316340 啊其 ...

  6. 在线最优化求解(Online Optimization)之五:FTRL

    在线最优化求解(Online Optimization)之五:FTRL 在上一篇博文中中我们从原理上定性比较了L1-FOBOS和L1-RDA在稀疏性上的表现.有实验证明,L1-FOBOS这一类基于梯度 ...

  7. asp.net中实现群发邮件功能

    前段时间在帮老师开发的网站中需要用到一个群发邮件的功能,而自己之前学习cms系统的时候用的we7的群发邮件功能也有一些问题,于是乎便自己去网上查了一下资料,自己总结了一下,并且封装成了一个类,亲测有用 ...

  8. UML状态图(转载)

    概述: 图表本身的名称,阐明该图的目的和其他细节.它描述了在一个系统中的一个组成部分不同的状态.状态是特定的一个系统的组件/对象. 状态图描述了一个状态机.我们阐明的状态机可以被定义为一台机器,它定义 ...

  9. awk 统计数据在文件中的出现次数

    突然发现awk原来可以统计同一数据在要处理的文件中所出现的次数.原来的时候为了分析数据还自己写程序,哎,无语,当时还以为自己多强,手工分析不过来的东西写程序处理.现在想来实在是年少轻狂.解决问题嘛,不 ...

  10. python笔记1

    1.python中的语句块是用缩进表示,并不像C类语言中用{}表示语句块,还有就是语句块的开始貌似是用:表示,然后C类语言中()在python中用"空格"表示了,例如python中 ...