zoukankan      html  css  js  c++  java
  • 静态抽象

    静态抽象

    静态

    class Ren{
        public $name;
    }
    //***普通成员属于对象的
    //***静态成员属于类的
    class FenBi{
        public static $color; //静态成员变量(属于类)
        public $length;
        public static function test(){  //静态方法
                echo "红色的粉笔";
              //echo "长度为:{$this->length}"  //静态的方法里面不可以包含普通成员,因为不同成员是属于对象的,当没有建立对象时,没有length成员变量,无法调用
         }
        public function ceshi(){
                echo "颜色为".FenBi::$color;    //如果可以造出对象,就证明这个类存在,所以就可以调出静态成员
         }
    }
    
    FenBi::$color = "红色";  //赋值
    FenBi::$color;  //取值    
    FenBi::test();
    $f = new FenBi();
    $f->ceshi();

    什么时候会用静态?
    1.如果这个类里面比较简单,有个成员方法要经常调用,做成静态会方便
    2.如果想把A类里面的值传给B类

    class A{
      /*public function tanchu(){
            echo "输出一个对象";
           var_dump(new B("张三"));
        }*/
        public function chuanzhi(){
            B::$b = "张三";  //静态传值
        }  
    }
    
    class B{
        public static $b;
      /*public $a;
        public function __construct($a){
              $this->a = $a;
        }*/         //构造函数方法
    }
    $a = new A();
    $a->chuanzhi();
    echo B::$b;

    抽象

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

    抽象方法:抽象的一个方法,不能直接调用,用来在父类里面规定子类必须要实现什么样的方法或功能。

    一个正常的类里面不能有抽象方法,如果有抽象方法那么必须是抽象类。

    抽象关键字:abstract.

    abstract class Ren{
          public abstract function test();  //抽象方法在定义时不能加函数体 
    }
    class China extends Ren{
          public function test(){   //对父类方法进行重写
              echo "aa";
       }
    }
    $r = new China();

    接口:极度抽象的类

    interface(面向对象)或API(网络数据接口80%)

    关键字:interface.

    //主要控制这个程序子类里面,必须要实现的功能
    interface USB{
        public function read();
        public function write();  //极度抽象类里面只能有抽象方法,不能有普通方法和成员变量
    }
    //接口的继承:implements
    class ShuBiao implements USB{    //相当于驱动
        public function read(){
           echo "鼠标插入了";
      }
        public function write(){
           echo "给鼠标供电";
      }
    }
    
    $s = new ShuBiao();
    $s->read();
  • 相关阅读:
    eclipse下c/cpp " undefined reference to " or "launch failed binary not found"问题
    blockdev 设置文件预读大小
    宝宝语录
    CentOS修改主机名(hostname)
    subprocess报No such file or directory
    用ldap方式访问AD域的的错误解释
    英特尔的VTd技术是什么?
    This virtual machine requires the VMware keyboard support driver which is not installed
    Linux内核的文件预读详细详解
    UNP总结 Chapter 26~29 线程、IP选项、原始套接字、数据链路访问
  • 原文地址:https://www.cnblogs.com/Whitehat/p/8445712.html
Copyright © 2011-2022 走看看