php面对对象编程

静态方法static  (public static $a=1)  (static function)

静态方法不能访问非静态属性(变量),普通方法可以访问静态变量

public static function test(){

echo this->name;

}        这是错的。

例子:

name=$name;

}

static function  enterschool($ifee){

self::$fee+=$ifee;

}

static function  getfee(){

return self::$fee;

}

}

$stu1=new student("xiaohong");

/*通过类名来调用静态方法*/

// student::enterschool(300);

/*通过对象直接调用*/

$stu1->enterschool(300);

$stu2=new student("xiaoming");

$stu2->enterschool(200);

echo student::getfee();

?>

在类外部 类名::类方法名 或者 对象名->类方法名

在类内部 self::类方法名  或者 类名::类方法名

abstruct

抽象方法,只有方法的声明部分,没有方法体。是为了让子类去实现

一个类中,只要有一个抽象方法,这个类必须被声明为抽象类。子类的访问范围>=父类的访问范围

抽象方法在子类中必须被重写。

抽象类不能被实例化。如果一个类继承了某个抽象类,则它必须实现该类的所有抽象方法,要不然自己就要变成抽象类

final

我们不希望一个类被继承,我们使用final来修饰这个类。这个类将无法被继承。并且final不能修饰变量(final public $a)是错的。

如果不希望类中的某个方法被子类重写,我们可以设置这个方法为final方法,只需要在这个方法前加上final修饰符.如果这个方法被子类重写,将会出现错误。

const常量

比如  const PI=3.14

常量在定义的时候必须给初值。默认就是public,不能更改成私有或者保护。

const定义的常量与定义变量的方法不同,不需要加 $ 修饰符,名称一般都大写,这是一个约定.

我们使用 类名::常量名 来调用这个常量。但是在类的内部,我们也可以使用另外一种方法,self::常量名

所谓继承就是一个子类通过extends父类,把父类的(public,protected)属性和(public,protected)方法继承下来,在子类中访问父类的方法是 父类::方法名 或者 parent::方法名

面向对象三大特征  封装,继承,多态

控制修饰符

public 表示全局,类内部,外部和子类都能访问

protected  表示保护的,只有本类或子类可以访问

private  表示私有的,只有本类的内部可以使用

方法之间可以互相调用,但是需要使用$this引用

如果要访问protected和private修饰的的成员变量,我们可以使用__get()和__set(),但不推荐用,效率不高。

__set()对protected或private属性,进行赋值操作。

__get()获取protected或private属性的值

例子:

class A{

private $n1;

public function __set($name,$value){

$this->$name=$value;

}

public function __get($name){

if(isset($name)){

return $this->$name;

}else{

return null;

}

}

}

$a1=new A();

$a1->n1="sss";

echo $a1->n1;

多态

http://blog.csdn.net/whd526/article/details/70242918

http://www.jb51.net/article/112239.htm

你可能感兴趣的:(php面对对象编程)