} } }

    php面向对象进修

    添加时间:2013-8-12 点击量:


    近期跟着别人开辟一套php法度,深感本身面向对象很痴人,于是再次巩固了一下面向对象的进修,本身收拾了一下这几天面向对象的器材,给大师分享!!


    面向对象的三大特点:


    封装 -- 隐蔽内部实现,稳定外部接口


    持续 -- 子类持续父类成员,实现代码复用


    多态 -- 不合子类对同一消息做出不合的反应


    一、接口 -- 是一套规范,遵守这个规范就可以实现功能


    在PHP中,接口同样是一种规范和标准,可以束缚类的行动,定义一个接口不指定具体的实现。


    接口是把隐式公共办法和属性组合起来,以封装特定功能的一个凑集。一旦定义了接口,就可以在类中实现它。如许,类就可以支撑接口所指定的所有属性和成员。


    重视:
    接口不克不及零丁存在。接口不克不及像实例化一个类那样实例化接口。接口不克不及包含实现其成员的任何代码,而只能定义成员本身。实现接口必须在引用接口的类中实现。


    一个类可以支撑多个接口,多个类也可以支撑雷同的接口。所以接口的概念让用户和其他开辟人员更轻易懂得其他人的代码。


    二、多态性


    1、指不合的对象收到雷同消息时,会产生不合行动
    2、同一个类在不合的场合下发挥解析出不合的行动特点


    三、抽象类和抽象办法


    1、抽象类用来列举一个类所须要的行动
    2、抽象类不明白供给具体实现办法
    3、抽象类必须由其子类实现它的抽象办法(除非子类也具有抽象性)
    4、抽象类不克不及被实例化
    5、抽象类不克不及被锁(final润饰)


    四、抽象类的应用处合


    1、抽象类和抽象办法实现多态性
    2、父类供给一系列规定,束缚子类的行动
    3、父类可以供给一些共性的行动
    以上就是我对面向对象的总结,下面就是具体的说说php面向对象的重点,难点!
    类: [url=http://www.t00ls.net/#viewSource]链接标识表记标帜预览源代码[/url] [url=http://www.t00ls.net/#printSource]链接标识表记标帜打印[/url][url=http://www.t00ls.net/#about]链接标识表记标帜关于[/url]01<?php


    02/


    03 类的根蒂根基常识


    04 1、类应用class关键字定义,类的名称每个单词首字母大写


    05 2、类的属性必须用封装关键字润饰(public、protected、private)


    06 3、类的办法可以不被封装关键字润饰,默认为:public


    07 4、类中的机关函数:__construct(){},默认为空,可初始化属性。


    08 也可以重载机关函数,有随便率性多个参数。重视:PHP中机关函数


    09 只能有一个。


    10 5、类中的析构函数:__destruct(){}


    11/


    12/


    13 类的封装关键字


    14 1、public -- 公开的


    15 2、protected -- 受保护的


    16 3、private -- 私有的


    17


    18 就是因为应用了受保护的或私有的封装关键字,所以产生了读写办法,


    19 于是写办法可以验证数据的合法性;读办法可以将受保护或私有的属


    20 性保护起来不被外部批改。


    21


    22 4、__get(¥n){return ¥this->¥n;} 读办法


    23 5、__set(¥n,¥v){¥this->¥n=¥v;} 写办法


    24


    25/


    26class People{


    27 private ¥name;


    28 private ¥age;


    29 private ¥sex;


    30


    31 //机关函数


    32 function __construct(¥name,¥age=18,¥sex=男){


    33 ¥this -> name = ¥name;


    34 ¥this -> age = ¥age;


    35 ¥this -> sex = ¥sex;


    36 echo ¥this -> show();


    37 }


    38


    39 //析构函数


    40 function __destruct(){


    41 //echo {¥this->name}被开释了!;


    42 }


    43


    44 //读属性


    45 function __get(¥n){


    46 if(¥n == name){


    47 return ¥this -> ¥n;


    48 }


    49 }


    50


    51 //写属性


    52 function __set(¥n,¥v){


    53 if(¥n == name){


    54 ¥this -> ¥n = ¥v;


    55 }


    56 }


    57


    58 public function show(){


    59 return 恭喜你!创建{¥this->name}对象成功!;


    60 }


    61}


    62


    63/


    64 持续


    65 1、应用关键字extends


    66 2、被持续的类叫做:父类(基类)


    67 3、持续的类叫做:子类(派生类)


    68 4、单一持续


    69 5、具有传递性,即:父类有的,子类也会有


    70 6、子类的封装关键字级别不克不及低于父类


    71 7、父类机关函数也会被持续


    72 8、重载


    73/


    74class Stu extends People{


    75


    76


    77 public function show(){


    78 return parent::show().O(∩_∩)O哈哈~;


    79 }


    80}


    81¥stu = new Stu(张三);


    82echo ¥stu -> name;


    83?>
    抽象类: [url=http://www.t00ls.net/#viewSource]链接标识表记标帜预览源代码[/url] [url=http://www.t00ls.net/#printSource]链接标识表记标帜打印[/url][url=http://www.t00ls.net/#about]链接标识表记标帜关于[/url]01<?php


    02/


    03 抽象类


    04 1、应用abstract关键字润饰的类叫抽象类,类中至少有一个抽象办法,


    05 可以有具体办法。


    06 2、抽象类不克不及被实例化,不克不及被锁(final润饰),只能被持续


    07 3、抽象类必须由其子类实现它的抽象办法(除非子类也具有抽象性)


    08/


    09abstract class Animal{


    10 protected ¥name;


    11 protected ¥age;


    12 protected ¥weight;


    13


    14 abstract function __construct();


    15


    16 abstract function eat(¥name);


    17


    18 abstract function sleep();


    19


    20 static function show(¥what){


    21 return 我是{¥what->name}!;


    22 }


    23}


    24


    25//Dog类


    26class Dog extends Animal{


    27 function __construct(¥name,¥age,¥weight){


    28 ¥this -> name = ¥name;


    29 ¥this -> age = ¥age;


    30 ¥this -> weight = ¥weight;


    31 }


    32


    33 function eat(¥n){


    34 return ¥this->name.在吃.¥n;


    35 }


    36


    37 function sleep(){


    38 return ¥this->name.睡的正酣!;


    39 }


    40


    41 function wangwang(){


    42 return 汪汪叫!!!;


    43 }


    44}


    45


    46//Cat类


    47class Cat extends Animal{


    48 function __construct(¥name,¥age,¥weight){


    49 ¥this -> name = ¥name;


    50 ¥this -> age = ¥age;


    51 ¥this -> weight = ¥weight;


    52 echo ¥this->miaomiao();


    53 }


    54


    55 function eat(¥n){


    56 return ¥this->name.在吃.¥n;


    57 }


    58


    59 function sleep(){


    60 return ¥this->name.睡的正酣!;


    61 }


    62


    63 function miaomiao(){


    64 return 喵喵叫!!!;


    65 }


    66}


    67


    68¥dog = new Dog(旺财,4,10kg);


    69echo ¥dog->sleep();


    70echo ;


    71¥cat = new Cat(龙猫,2,5kg);


    72echo ;


    73echo ¥cat->sleep();


    74echo ;


    75echo Animal::show(¥dog);


    76echo ;


    77echo Animal::show(¥cat);


    78?>
    接口: [url=http://www.t00ls.net/#viewSource]链接标识表记标帜预览源代码[/url] [url=http://www.t00ls.net/#printSource]链接标识表记标帜打印[/url][url=http://www.t00ls.net/#about]链接标识表记标帜关于[/url]01<?php


    02interface IUsb{


    03 const name1=3.0接口;


    04 function type1(¥what);


    05 function power1();


    06}


    07


    08interface IApi{


    09 const name2=扩大插槽;


    10 function type2();


    11 function power2();


    12}


    13


    14class Pc implements IUsb,IApi{


    15


    16 function type1(¥what){


    17 if(¥what == IUsb::name1){


    18 return IUsb::name1.¥this->power1();


    19 }


    20 else{


    21 return 接口不合错误,无法应用!;


    22 }


    23 }


    24


    25 function power1(){


    26 return 接口正确,电源开启中...;


    27 }


    28


    29 function type2(){}


    30


    31 function power2(){}


    32}


    33


    34class Mp3 implements IUsb{


    35 public ¥name = IUsb::name1;


    36 function type1(¥s){}


    37 function power1(){}


    38}


    39¥p = new Pc();


    40¥mp3 = new Mp3();


    41echo ¥p -> type1(¥mp3->name);


    42?>
    对大师的php进修有所帮助,呵呵,反正这几天我重温面向对象收成很多,也提示广大同窗,温故而知新!!!!

    文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
    分享到: