-
面向对象––实例解析查看全部
-
面向对象––实质查看全部
-
为什么要使用面向对象?查看全部
-
什么是面向对象?查看全部
-
对象的特点查看全部
-
对象的基本组成查看全部
-
什么是对象?查看全部
-
public function __get($name){ return "Getting the property: ".$name; } public function __set($name,$value){ echo "Setting the property:".$name." to value:".$value."\n"; } $obj=new MagicTest(); echo $obj->className."\n"; $obj->className = "MagicClassX";查看全部
-
/* 在给不可访问属性'赋值'时,__set()会被调用。 '读取'不可访问属性的值时,__get()会被调用。 当对不可访问属性调用'isset()'或'empty()'时,__isset()会被调用。 当对不可访问属性调用'unset()'时,__unset会被的调用。 */查看全部
-
<?php class MagicTest{ //__tostring 会在把对象转换为string的时候自动调用 public function __tostring(){ return "This is the Class MagicTest.\n"; } //__invoke 会在把对象当作一个方法调用的时候自动调用 public function __invoke($x){ echo "__invoke called with parameter ".$x."\n"; } //方法的重载 (overload) //第一个参数是调用方法的名称;第二个参数是方法调用的参数组成的数组。 public function __call($name,$arguments){ //implode:分割数组 echo "Calling ".$name." with parameters: ".implode(",",$arguments)."\n"; } //静态方法的重载,注意这个方法需要设定为static public static function __callStatic($name,$arguments){ echo "Static Calling".$name." with parameters: ".implode(",",$arguments)."\n"; } } $obj=new MagicTest(); //echo $obj; //echo $obj(5); $obj->runTest("para1","para2"); MagicTest::runTest("para1","para2"); ?>查看全部
-
<?php class MagicTest{ //__tostring 会在把对象转换为string的时候自动调用 public function __tostring(){ return "This is the Class MagicTest.\n"; } //__invoke 会在把对象当作一个方法调用的时候自动调用 public function __invoke($x){ echo "__invoke called with parameter ".$x."\n"; } } $obj=new MagicTest(); echo $obj; echo $obj(5); ?>查看全部
-
<?php //abstract关键字用于定于抽象类 abstract class ACanEat{ //在抽象方法前面添加abstrac关键字可以标明这个方法时抽象方法而不需要具体实现 abstract public function eat($food); //抽象类中可以包含普通的方法,有方法的具体实现 public function breath(){ echo "Breath use the air. \n"; } } //继承抽象类的关键字是extends class Human extends ACanEat{ //继承抽象类的子类需要实现抽象类中定义的抽象方法 public function eat($food){ echo "Human eating ".$food."\n"; } } class Animal extends ACanEat{ public function eat($food){ echo "Animal eating ".$food."\n"; } } $man=new Human(); $man->eat('Apple'); $man->breath();//和animal类共有了抽象类中breath方法 $monkey=new Animal(); $monkey->eat('Banana'); $monkey->breath(); ?>查看全部
-
$obj=new Human(); $obj->eat('Apple'); $monkey=new Animal(); $monkey->eat('Banana'); //相同的一行代码,对于传入不同的接口的实现的对象的时候,表现是不同的。这就是多态。 checkEat($obj); checkEat($monkey);查看全部
-
//不能实例化接口 //instanceof(1)判断一个对象是否是某个类的实例 //instanceof(2)判断一个对象是否实现了某个接口 var_dump($obj instanceof ICanEat); function checkEat($obj){ if($obj instanceof ICanEat){ $obj->eat('food'); }else{ echo "The obj can't eat.\n"; } } checkEat($obj); checkEat($monkey); //可以用extends让接口继承接口 interface ICanPee extends ICanEat{ public function pee(); } //当类实现子接口时,父接口定义的方法也需要在这个类里实现 class Human1 implements ICanPee{ public function eat($food){} public function pee(){} }查看全部
-
<?php //interface关键字用于定义接口 interface ICanEat{ //接口里面的方法不需要有方法的实现 public function eat($food); } // implements关键字用于表示类实现某个接口 class Human implements ICanEat{ //实现了某个接口之后,必须提供接口中定义的方法的具体实现。 public function eat($food){ echo "Human eating ".$food."\n"; } } $obj=new Human(); $obj->eat('Apple'); ?>查看全部
举报
0/150
提交
取消