虽然写得比较简陋,但也是自己的心得体会,好好努力,开心赚钱
1.多态:不同的类对同一个操作表现出不同的行为
2.构造函数__construct()和析构函数__destruct()
3.通过__set()和__get()这两个访问器函数对类中的属性进行操作
4.我们可能需要在子类中给某个属性赋予一个同超类中不同的默认值,或者给某个操作赋予一个同超类中不同的功能,这就叫重载
5.如果子类中提供了替代定义,即重载了这个属性或方法,替代定义将有优先级并重载初始定义
6.如果想要在子类中调用父类被重载的方法,可以使用parent关键字,如parent::function()
7.使用final关键字可以禁止继承和重载
8.PHP中不支持多重继承,但可以使用接口,但继承接口的类必须实现里面所有的方法
9.Pec-Class常量可以通过const这个关键字来实现,
10.实现静态方法可以使用static关键字,在静态方法中,不可以使用this关键字
11.类型检查:instanceof关键字允许检查一个对象的类型,包括判断是否实现了某个接口
12.延迟静态绑定:该特性允许在一个静态继承的上下文中对一个被调用类的引用,父类可以使用子类继承的静态方法(这个方法只有在PHP5.3及以上才能使用)
<?php
class A{
public static function who(){
echo __CLASS__;
}
public static function test(){
static::who();//延迟静态绑定
}
}
class B extends A{
public static function who(){
echo __CLASS__;
}
}
B::test();
上面是一个延迟静态绑定的例子,将返回B,其实关于这个,自己理解得也不是很透彻,姑且先放在这,等待高手来详细阐述
13.克隆对象,使用关键字clone可以复制一个已有的对象,且具有相同的值,如$b=clone $c;如果不需要克隆过来的默认行为,可以在基类中使用__clone()方法改变这种默认行为
15.使用__call()重载方法,方法的重载在许多面向对象中很常见,但在PHP中却不是,因为PHP中的灵活类型和较容易实现的可选的函数参数,就是通过这个方法来实现
<?php
class A{
public function echoarray(){
echo "我是一个数组<br>";
}
public function echoint(){
echo "我是一个数字<br>";
}
public function echostring(){
echo "我是一个字符串<br>";
}
public function __call($method,$p){
if($method=="display"){
if(is_array($p[0])){
$this->echoarray();
}
if(is_numeric($p[0])){
$this->echoint();
}
if(is_string($p[0])){
$this->echostring();
}
}
}
}
$i=1;
$a=new A;
$a->display(array());
$a->display("hello PHP");
$a->display($i);
以上代码将返回:
我是一个数组
我是一个字符串
我是一个数字
这个方法中有两点需要注意的地方:第一个是display()方法可以不用实现,第二点需要注意的是参数上面的$p是一个数组,所以判断的时候一定要用$p[0]
16.__autoload()是一个单独的函数,不是类中的方法,用来自动包含类,但貌似很多人都说这个函数效率较差,并不推荐使用
17.类的迭代,在PHP中可以使用foreach()方法可以取出对象中的所有属性
18.__toString()方法可以将类转换成字符串,即echo一个对象时,该函数会把所有返回内容echo出来
19.使用Reflection(反射)API,通过访问已有的类和对象找到类和对象的结构和内容