静态抽象类加载类魔术方法等

Posted 彬彬有礼☆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态抽象类加载类魔术方法等相关的知识,希望对你有一定的参考价值。

静态  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 写在定义类前面的,将该类定义为最终类,则该类不能被继承

 

以上是关于静态抽象类加载类魔术方法等的主要内容,如果未能解决你的问题,请参考以下文章

多态抽象类魔术方法

11月2号总结

继承抽象static

静态代码块类的继承和接口

5.java基础之static类加载过程

总结2.1