//面向对象
//一、什么是面向对象
//面向过程
//什么是对象
//一切皆是对象
//类
//由对象抽象画
//造类
class Ren
{
//构造方法
???function __construct($n)
???{
???????$this->name = $n;
???}
//成员变量
???public $name = "平阳";
???private $sex = "男";
//成员方法
???public function Speak(){
???????echo "正在说话";
???????echo $this->sex;
???}
}
//this (这个对象)
//对象实例化
$r1 = new Ren("平阳");
//$r1->name = "张杰";
echo $r1->name;
$r2 = new Ren("张杰");
echo $r2->name;
//var_dump($py);
//var_dump($r1==$r2);
//
//访问修饰符:
//public 公共的,所有对象都可访问
//protected 受保护的,当前类和子类可以访问
//private 私有的,当前类可以访问(只有内部可以访问)
//构造方法(写不写都存在)
//类的初始化方法
//////////////////////////////////
//上午总结
class Renlei
{
// ???构造函数/构造方法
???function __construct($name, $sex)
???{
???????$this->name = $name;
???????$this->sex = $sex;
???}
// ???析构函数/析构方法
???function __destruct()
???{
???????echo "这是析构方法";
???}
???private $name;
???private $sex;
???private $age;
???private $mz;
// ???双下划线开头的方法=>魔术方法
???function __set($n, $v)
???{
???????if ($n == "age") {
???????????if ($v > 10 && $v < 50) {
???????????????$this->$n = $v;
???????????}
???????}else{
???????????$this->$n = $v;
???????}
???}
???function __get($n)
???{
???????if($n == "sex"){
???????????if($this->$n == "1"){
???????????????return "男";
???????????}else{
???????????????return "女";
???????????}
???????}
???????return $this->$n;
???}
???public function speak()
???{
???????echo "正在说话";
???}
}
$r3 = new Renlei("py", "1");
//$r3->__set("age", "9");
$r3->age="11";
echo $r3->sex;
echo "<pre>";
var_dump($r3);
echo "</pre>";
//面向对象(OOP)的三要素
//封装,继承,多态
//1.封装
//目的:让类更加安全
//步骤:1,把所有的成员变量私有化
// ???2,对成员变量进行赋值
// ???3,对成员变量进行限制
class Ren
{
???private $name;
???private $sex;
???function __construct($n,$v)
???{
???????if ($n=="name"){
???????????$this->$n =$v;
???????}else{
???????????$this->$n =$v;
???????}
???}
???function __toString()
???{
???????// TODO: Implement __toString() method.
???????return"这是个方法";
???}
???function Speak(){
???????echo "正在说话";
???}
}
$r1 = new Ren("name","张三");
echo $r1;
//继承
//概念:子类可以继承父类的一切
//方法:
//override ??重写
//overload ??重载 ?编译多态
class Chinese extends Ren{
???function spesk(){
// ???????parent::speak();
???????echo "哈哈哈哈哈";
???}
}
$r2 = new Chinese("name","李四");
$r2->spesk();
//不知道传了多少把它都变成一个数组
function abc(){
???$arr = func_get_args();
}
//多态(运行多态)
//概念:当父类引用指向子类实例,子类里面对父类进行重写,父类引用调用该方法的时候表现不同的方法
//普通成员
//普通成员是属于对象的
//静态成员
//静态成员属于类
class Fenbi{
???public $lenght = "10cm"; ?????????//普通成员 ??属于类 ?static
???public static $color; ???//静态成员 ??属于类
???function hua(){
???????echo $this->lenght;
???????echo self::$color;
???}
???static function hua2(){
???????echo self::$color;
???}
}
$fb = new Fenbi();
$fb->hua();
Fenbi::$color = "red";
Fenbi::hua2();
$fb2 = new Fenbi();
$fb2->hua();
//关键字
//self 在类里面代表该类
//静态方法不能调用普通成员
//普通方法可以调用静态成员
//抽象
//关键字 abstract
//特点 不能被实例化只能被继承
//目的 为了派生子类 控制子类
//用于写基类
abstract class Renlei{
???public $name;
???function speak(){
???????echo "正在说话";
???}
}
//接口 ?(面向对象的接口)
//极度抽象的类
//接口里面不能包含成员变量,只能包含成员方法
//成员方法没有函数体
//interface 命名大写I开头 ?implements
//实现接口的类,必须实现接口里面的所有方法
interface Iusb{
???public function read();
???public function write();
}
class mouse implements Iusb{
???function read()
???{
???????// TODO: Implement read() method.
???}
???function write()
???{
???????// TODO: Implement write() method.
???}
}
//接口(API) ???区分
PHP面向对象解析
原文地址:http://www.cnblogs.com/little-rock/p/7676343.html