静态、抽象类、加载类、接口,关键字 --小丑

关键字

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

静态 static关键字

普通成员,普通成员是属于对象的
静态成员,静态成员是属于类的
普通方法里面可以调用静态成员,静态方法里面不能调用普通成员

普通类

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);*/

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

静态、抽象类、加载类、接口,关键字    --小丑