• php部分---面向对象静态、抽象类、oop接口、加载类、魔术方法、关键字。


    静态  static关键字

    普通成员
    普通成员是属于对象的

    静态成员
    静态成员是属于类的

    普通方法里面可以调用静态成员
    静态方法里面不能调用普通成员
    self关键字 在类里面代表该类

    普通类
    class
    Ren { public $name="张三"; public static $zhongzu; //静态成员 普通方法 function Say() { echo self::$zhongzu."你好"; }
    静态类
    static
    function Run() { echo $this->name; } } Ren::$zhongzu = "民族"; Ren::Run(); $r = new Ren(); $r->Say();
    class myclass
    {
        static $count;//声明一个静态变量,用来统计对象创建的次数
        function __construct()//声明一个静态方法,在类外面直接使用类名就可以调用
        {
        self::$count++;//在方法中使用self访问静态成员并返回    
        }
        static function getcount()//声明一个静态方法,在类外面直接使用类名就可以调用
        {
        return self::$count;    //在方法中使用self 访问静态成员并返回
        }    
    }
    myclass::$count=0;//在类外面使用类名访问类中的静态成员,为其初始化赋值
    $myc1=new myclass();//创建第一个
    $myc2=new myclass();//创建第二个
    $myc3=new myclass();//创建第三个
    
    echo myclass::getcount()."<br>";//输出3
    echo $myc3->getcount();//输出3

    抽象类 abstract关键字

    不能被实例化
    做为父类使用

    abstract class YunSuan//定义一个抽象类
    {
    public $a;
    public $b;
    
    function Suan()
    {
    }
    }
    
    class Jia extends YunSuan//定义一个jia类继承与上边的抽象类
    {
    function Suan()
    {
    return $this->a+$this->b;
    }
    }
    
    class Jian extends YunSuan//定义一个jian类继承与上边的抽象类
    { 

    function Suan()
    {

    return $this->a-$this->b;
    }
    }

    class Cheng extends YunSuan//定义一个jian类继承与上边的抽象类

    {
    function Suan()
    {

    return $this->a*$this->b;
    }
    }

    $jia = new jia();
    $jia->a=10;
    $jia->b=5;
    echo $jia->Suan();
    $jian = new jian();
    $jian->a=10;
    $jian->b=5;
    echo $jia->Suan();


    $cheng = new cheng ();
     $cheng->a=10; 
    $cheng->b=5;
    echo $cheng->Suan();

    接口  关键词interface     implements
    极度抽象的类
    接口里面的方法主要是用来控制子类必须实现该类里面所有方法

    interface IUSB
    {    
    function Read(); //接口里面只声明函数名
    function Write(); 
    }
    
    class ShuBiao implements IUSB
    {
    function Read()
    {
    echo "鼠标插上了";
    }
    function Write()
    {
    echo "给鼠标传了数据";
    }
    }
    
    $s = new ShuBiao();
    $s->Read();

    加载类

    include("./Ren.class.php");//"./"
    include "./Ren.class.php";
    
    require("./Ren.class.php");
    require "./Ren.class.php";
    
    require_once("./Ren.class.php");
    require_once "./Ren.class.php";

    自动加载类
    1.所有的类文件要放在同一个文件夹下
    2.所有类文件的命名规则要一致
    3.所有类文件的名字要和类名保持一致

    function __autoload($classname)
    {
    require "./libs/".$classname.".class.php";
    }
    
    $r = new Ren();
    var_dump($r);
    
    $d = new cat();

    克隆对象 关键字clone

    class Ren
    {
    public $name;
    
    function Run()
    {
    echo "跑";
    }
    
    function __tostring()
    {
    return "name变量代表的是人员名称,Run方法是一个跑的方法";
    }
    
    //克隆对象的时候自动调用的方法
    function __clone()
    {
    $this->name = "李四";//克隆之后给name赋新值
    }
    }
    
    $r = new Ren();
    $r->name = "张三";
    
    $r1 = clone $r;//克隆的语法
    var_dump($r1);
    var_dump($r);*/

    魔术方法

    构造函数,对类里面成员进行初始化

    function __construct()
    {
    }


    析构函数,在对象释放的时候自动执行

    function __destruct()
    {
    }

    __set方法

    function __set($name,$value)
    {
    }


    __get方法

    function __get($name)
    {
    }

    __tostring()方法

    function __tostring()
    {
    }

    __clone方法

    function __clone()
    {
    }

    __autoload方法

    function __autoload($classname)
    {
    }

    __tostring()能够直接输出对象

    class Ren
    {
    public $name;
    
    function Run()
    {
    echo "跑";
    }
    
    function __tostring()//不加这个方法,是不能直接输出所造对象的,在类中添加此方法,可以直接输出对象
    {
    return "name变量代表的是人员名称,Run方法是一个跑的方法";
    }
    }
    
    $r = new Ren();
    echo $r;

    关键字

    1.class 定义类

    2.访问修饰符 public protected private
    3.new 造对象的关键字
    4.$this 代表该对象本身
    5.extends 代表继承
    6.parent 代表父类
    7.static 代表静态
    8.self 代表该类
    9.abstract 代表抽象,定义抽象类
    10.interface 代表接口,用来定义接口
    11.implements 实现接口
    12.clone 代表克隆
    13.override 重写
    14.overload 重载
    15.oop 代表面向对象
    16.final 写在定义类前面的,将该类定义为最终类,则该类不能被继承

  • 相关阅读:
    Mysql中use filesort的误区
    Windows双系统
    Java visualvm
    软件设计师06-数据结构
    安装VMware14可能出现的问题
    计算机硬件系统
    Web漏洞扫描
    crunch制作字典
    kali之HexorBase数据库破解
    memcahce 介绍以及安装以及扩展的安装
  • 原文地址:https://www.cnblogs.com/xingyue1988/p/6170288.html
Copyright © 2020-2023  润新知