php面向对象

JS面向对象:

1.什么是面向对象
面向对象是一个思想,就是把解决问题的注意力集中到对象上。
面向对象有三大特点 :封装 继承 多态
封装:就是把属性私有化,提供公共方法访问私有对象

继承:当多个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其它类继承这个父类
多态:就是“一种定义,多种实现”。

方法重载:在一个类中,允许多个方法使用同一个名字,但是方法的参数不同,完成的功能也不同

对象多态:子类对象可以与父类对象进行相互转换,而且根据其使用的子类的不同,完成的功能也不同
js可以模拟实现。arguments。

2.

如果是方法中的this?

  1.找到this  在调用方法时看方法前面的 "." 是谁,this就指向谁

  2.替换this  将this换成你找到的那个结果

  3.精确查找  用原型链接查找模式去分析

3.构造函数的返回值

   构造函数是返回该类的实例,可以把这个类的实例当为构造函数的返回值,因为构造函数的返回值类型总是当前类,因此无须定义返回值类型

php面向对象

一、php面向对象基础实践

通过对象的编程方式,可将实现生活中的一切事物以对象的形式表现出来。

*    本示例:定义一个“人”类

*    $name : 对象中的成员属性,在此类中表示人的姓名

*    say() : 对象中的成员方法,在此类中表示人说话的方法

*    $this : PHP中的伪变量,表示自身的类

*    __construct() : php中的魔术方法,构造函数,在实例化类时自动执行

二、面向对象编程实践

2.1  类的继承:extends 关键字

案例:创建一个“人”类做为父类,继承的子类都拥有其父类的成员属性、方法

class Human

{

    public $name;

    public function say()

    {

        echo "父类说话的方法,姓名:".$this->name." ";

    }

    public function eat()

    {

        echo "父类吃饭的方法 ";

    }

}

2.2  方法重写:子类重写父类的方法

class Human

{

    public function say()

    {

        echo "父类说话的方法";

    }

}

2.3 访问控制:public  protected  private 关键字

Public :修饰的属性和方法,子类都可以继承。定义公共的成员属性或方法,任何地方都可使用

Protected:修饰的属性和方法 子类都可以继承。定义受保护的成员属性或方法,只允许类本身或子类使用

Private:修饰的属性子类也可以继承。定义私有的成员属性或方法,只允许类的本身使用

2.4  static(静态)关键字

1)、静态属性用于保存类的公有数据

2)、静态方法里面只能访问静态属性或方法,不能使用 $this 伪变量

3)、静态成员不需要通过 new 关键字来实例化对象就可访问使用

class Human

{

    static $name = "张三";

    static function say()

    {

        echo "我的姓名叫:".self::$name;

    }

}

//外部使用静态成员属性或方法

echo Human::$name;

Human::say();

2.5  final关键字:不允许成员方法被重写,不允许被继承

案例:对于“运动员”这个类,不希望它再创建子类

class Student extends Sport

{

    public $name;

}

//实例化 Sport 类 ,调用 eat() 方法

$nba = new Sport();

$nba->eat();

//实例化 Student 类 ,给 name 属性负值

$obj = new Student();

$obj->name = "张三";

2.6  数据访问:$this   self  parent 关键字

$this:伪变量,代表类的本身,可访问本类及父类中的成员属性与方法

Self:访问类中的静态成员属性或方法。指向类本身

Parent:访问父类的成员属性或方法

2.7  接口:把不同类的共同行为方法进行定义,但不具体实现,由子类来实现具体的方法

定义接口关键字:interface
实现接口方法关键字:implements

2.8  多态:比如接口A有两个实现B和C,B和C对A接口里面定义的方法实现可以是不同的,这种现象称之为多态

2.9  抽象类:介入接口与类的定义之间,允许类里面一部分方法不实现,实现一部分有相同功能且不会更改的方法。然而接口类里面不允许有任何实现的方法

定义抽象类关键字:abstract

三、php面向对象特殊实践

当对象访问不存在的方法时,自动执行该函数。也称之为“方法重载”

    *    $fun : 方法名称

    *    $param : 传递的参数

当对象访问不存在的静态方法时,自动执行该函数。

    *    $fun : 方法名称

    *    $param : 传递的参数

$obj = new Object(); //实例化对象时,调用__constructor()方法

echo obj; //将对象以字符串形式输出时,调用__toString()方法

$obj->runTest(); //当调用对象中不存在的方法时,执行__call()方法

$obj::runTest(); //当调用对象中不存在的静态方法时,执行__callStatic()方法

$obj->name; //当调用对象中不存在的成员属性时,执行__get()方法

$obj->name = "张三"//当给对象中不存在的成员属性赋值时,执行__set()方法

$obj2 = clone $obj//当对象被克隆时,执行__clone()方法

 

 

原文地址:https://www.cnblogs.com/yuanyeds/p/11359305.html