• 微信:
  • hai764003
  • QQ:
  • 511211014
  • E-mail:
  • jaquery@163.com

案例总数51

访问总数312378

收藏总数310909

什么是面向对象?面向对象的简单了解!返回列表

上传时间:2015-02-02 内容关键字:什么是面向对象?面向对象的简单了解!


4. 后期绑定(延迟绑定)


class Human{

public static function whoami(){

echo '来自父类的whomi在执行
';

}

public static function say(){

self::whoami();

}

public static function say2(){

static::whoami();

}

}

class Stu extends Human{

public static function whoami(){

echo '来自子类的whoami在执行
';

}

}

Stu::say();

子类内没有say方法,找到了父类里的say方法,在这里的self指的是父类,因为你的执行环 境是父类。

Stu::say();

子类也没有say2方法,又找到了父类的say2方法,但是父类调用的是static::whoami,指调用 子类自己的whoami方法。如果子类没有whoami的话依旧会调用父类中的whoami

七、抽象类:


1. 无法实例化,类前加abstract,此类就成了抽象类,无法实例化。

2. 抽象方法是不能有方法体的。

3. 有抽象方法,此类必须是抽象类,但是抽象类内未必都是或者都有抽象方法。但是即便全是具体方法,只要类是抽象的,依旧不能实例化。


abstract class Flydea{

public abstract function engine();

public abstract function blance();

}


八、接口:


1. 概念:使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

我们可以通过interface来定义一个接口,就像定义一个标准的类一样,但其中定义所有的方法都是 空的。接口中定义的所有方法都必须是public,这是接口的特性。


2. 注意:

1. 接口的方法默认是抽象的,之前不必在加abstract,而且方法必须是public公开的。

2. 接口是一堆方法的说明,不能有属性,但是常量可以用。

3. 要实现一个接口,可以使用implements操作符。类中必须实现接口中定义的所有方法,否则会 报一个fatal错误。

4. 实现多个接口,可以用逗号来分隔多个接口的名称,接口中的方法不能有重名。

5. 接口也可以继承,使用extends操作符。如果有接口继承了父接口,那么父接口中的方法也 必须全部实现。

6. 接口可以继承多个接口,这个和类不同。

7. 接口就像零件,而用多种零件可以组合出一种新的东西。


3. 代码实例:


interface animal{

public function eat();

}

interface bird{

public function fly();

}

interface monkey extends animal{

public function run();

}

class Human implements monkey,bird{

public function eat(){

echo "eat";

}

public function run(){

echo "run";

}

public function fly(){

echo "fly";

}

}

$lisi = new Human();

$lisi->eat();


4. 使用场景:


比如一社交网站,关于用户的处理是核心应用。应用如下:

登录

退出

写信

招呼

更新心情

吃饭

捣乱

示爱

聊骚


这么多方法,都是用户的方法,自然可以写一个user类,全包装起来,但是,分析用户一次性使用不了这么多方法,会造成浪费,而且不能达到灵活使用的目的:


用户信息:(登录,退出,写信,看信,招呼,更新心情)

用户娱乐:(骂人,捣乱,示爱,聊骚)


开发网站的时候,分析出这么多类,这么多方法,我们都晕了。而且作为调用者,我不需要了解你 的用户信息类,用户娱乐类,我就可以知道如何调用者两个类。

因为:这两个类都要实现上述的接口,通过这个接口就可以规范开发。


interface UserBase{

public function login($u,$p);

public function logout();

}

interface UserMsg{

public function writeMsg();

public function readMsg();

}

interface UserFun{

public function spit($to);

public function showLove($to);

}


下面的这个类和接口的参数不一样,就马上报错,这样,接口强制统一了类的功能,不管你有几个 类,一个类中有几个方法。

class User implements UserBase{

public function login($u){

}

}


 

小海哥推荐你看: 博客园  php教程分享网站  phpmywind  脚本之家