zoukankan      html  css  js  c++  java
  • 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()方法

     

     

  • 相关阅读:
    Eclipse搭建springboot项目(八)拦截器、过滤器、监听器
    JAVA LOG
    Eclipse搭建springboot项目(七)启动方式
    Eclipse搭建springboot项目(六)全局异常
    Eclipse搭建springboot项目(五)单元测试
    Eclipse搭建springboot项目(四)热部署
    Eclipse搭建springboot项目(三)配置文件自动注入+文件上传需求
    报错
    Eclipse搭建springboot项目(二)springboot目录
    Linux window查询网络端口
  • 原文地址:https://www.cnblogs.com/yuanyeds/p/11359305.html
Copyright © 2011-2022 走看看