抽象

                静态关键字static和self                      

     static关键字是在类中描述成员属性成员方法是静态的;前面声明了“Person”的人类,在“Person”这个类里如果我们加上一个“人所属国家”的属性,这样用“Person”这个类实例化出几百个或者更多个实例对象,每个对象里面就都有“所属国家”的属性了,如果开发的项目就是为中国人而开发的,那么每个对象里面就都有一个国家的属性是 “中国“其它的属性是不同的,如果我们把“国家”的属性做成静态的成员,这样国家的属性在内存中就只有一个,而让这几百个或更多的对象共用这一个属性。

作用:

static成员能够限制外部的访问,因为static的成员是属于类的,是不属于任何对象实例,是在类第一次被加载的时候分配的空间,其他类是无法访问的,只对类的实例共享,能一定程度对类该成员形成保护;

static方法是类中的一个成员方法,属于整个类,即使不用创建任何对象也可以直接调用!

class Ren
{
	public $name="张三";
	public static $zhongzu; //静态成员
	
	//普通方法
	function Say()
	{
		echo self::$zhongzu."你好";
	}
	//静态方法
	static function Run()
	{
		//echo  $this->name;  静态方法不能调用非静态属性
	 echo self::$zhongzu;
}
}
Ren::$zhongzu = "战斗民族";//静态属性赋值
Ren::Run();               //调用静态方法

$r = new Ren();
$r->Say();

  

结果:


//普通成员
//普通成员是属于对象的

//静态成员
//静态成员是属于类的

//普通方法里面可以调用静态成员
//静态方法里面不能调用普通成员
//self关键字 在类里面代表该类

                                抽象                                 

抽象类
不能被实例化
做为父类使用

abstract class Demo
{
    var $test;
 
    abstract function fun1();
    abstract function fun2();
 
    function fun3()
    {
        ...
    }
}
 
$demo = new Demo(); // 抽象类不能产生实例对象,所以这样做是错的,实例化对象交给子类
 
class Test extends Demo
{
    function fun1()
    {
        ...
    }
 
    function fun2()
    {
        ...
    }
}
 
$test = new Test(); // 子类可以实例化对象,因为实现了父类中所有抽象方法

  

实例:

abstract class YunSuan
{
	public $a;
	public $b;
	
	function Suan()
	{
	}
}

class Jia extends YunSuan
{
	function Suan()
	{
		return $this->a+$this->b;
	}
}

class Jian extends YunSuan
{
	function Suan()
	{
		return $this->a-$this->b;
	}
}

class Cheng extends YunSuan
{
	function Suan()
	{
		return $this->a*$this->b;
	}	
}

$cheng = new Cheng();
$cheng->a=10;
$cheng->b=5;
echo $cheng->Suan();

  

结果:50

接口
//极度抽象的类
//接口里面的方法主要是用来控制子类必须实现该方法

interface IUSB
{	
	function Read(); //接口里面只声明函数名
	function Write(); 
}

class ShuBiao implements IUSB    //子类中必须继承父类中所有函数
{
	function Read()
	{
		echo "鼠标插上了";
	}
	function Write()
	{
		echo "给鼠标传了数据";
	}
}

$s = new ShuBiao();
$s->Read();

  

结果:

原文地址:https://www.cnblogs.com/cyrfr/p/6169278.html