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