zoukankan      html  css  js  c++  java
  • 面向对象的静态、抽象和加载

      静态:

        关键字为:static

        静态成员与普通成员的区别:普通成员是属于对象的,为静态成员是属于类的。

    class FenBi{
        public static $color;   //静态成员
        public $length;  //普通成员
        public static function test(){
            echo "长度为:{$this->length}";
        }
        public function ceshi(){
            echo "颜色为".FenBi::$color;
        }
    }
    FenBi::$color = "红色";  //赋值使用类名
    $f = new FenBi();
    $f->ceshi();

        静态的方法里面不能包含普通成员(没有对象,没办法调用普通成员);

        普通的方法里面可以包含静态成员。

      抽象:

        抽象类:更加抽象的一个类,无法直接实例化对象,主要做为父类存在;

        抽象方法:抽象的一个方法,不能直接调用;

        抽象关键字:abstract。

    abstract class Ren{
        public abstract function test();
    }
    class China extends Ren{
        public function test(){
            echo "aa";
        }
    }
    $c = new China();

        接口:极度抽象的类,里面只能包含抽象方法,不能包含普通方法和成员变量。

    //定义实现哪些功能
    interface USB{
        public function read();
        public function write();
    }
    //具体实现方法
    class ShuBiao implements USB{
        public function read(){
            echo "鼠标插入了";
        }
        public function write(){
            echo "给鼠标供电了";
        }
    }
    
    $s = new ShuBiao();
    $s->read();
    $s->write();

        接口一般还表示API:网络数据接口。

      加载:

        如果在类里面只造了一个对象,然后直接输出会报错,入过想输出查看类里面的内容需要使用到加载。

        关键词:__tostring,同样为一个魔术方法,在输出对象时自动调用。

    class Ren{
        public function __tostring(){
            return "这是一个人类";
        }
    $r = new Ren();
    echo $r;  //输出这是一个人类

      克隆:

        能够从一个对象里面克隆出一个一模一样的对象出来。

        关键词:__clone

    class Ren{
        public $name;
        public function __clone(){
            //$this->name = "李四";   //输入这句可以改变输出的内容
        }
    }
    $r = new Ren();
    //克隆对象
    $r = new Ren();
    $r->name = "张三";
    $r1 = clone $r;
    var_dump($r1);  //输出张三

      加载类:

        1.

    include("类所在的地址");

          这种执行两次会因为重复报错,写成:

    include_once("类所在的地址");

          这样就可以正常显示,表示请求一次,可防止因发生重复而报错。

        2.

    require("类所在的地址");

          同样两次重复会报错

    require_once("类所在的地址")

          这样就可以防止报错。

        这两种的区别:如果类里面出现错误,include不会影响程序执行,require会导致后面的不能执行。

        3.自动加载类:

          条件:

            1.类的命名要规范;

            2.所有的类要放在同一个文件夹下。

          类的文件命名规范:类名(同样首字母大写).class.php。

          关键词:__autoload

    function __autoload($classname){
        require_once "地址";
    }

            然后在同一个目录下新建几个类,即可调用。

  • 相关阅读:
    品尝阿里云容器服务:负载均衡与容器的关系
    基于微服务架构、运行于容器中的.NET Core示例应用eShopOnContainers
    基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
    用工厂模式解决ASP.NET Core中依赖注入的一个烦恼
    终于知道什么情况下需要实现.NET Core中的IOptions接口
    ASP.NET Core Web API处理HttpResponseMessage类型返回值的问题
    ASP.NET Core奇遇记:无用户访问,CPU却一直100%
    省一行是一行:在if语句中使用C# 7.0的模式匹配
    ASP.NET Core 2.0 Preview 1 中贴心的新特性
    .NET Core类库项目中如何读取appsettings.json中的配置
  • 原文地址:https://www.cnblogs.com/maoqiaoyu123/p/8250799.html
Copyright © 2011-2022 走看看