php5面向对象入门(三)

原文作者 刀客羽朋 ,这里重新整理,出处:http://www.cnblogs.com/tograce/category/161526.html

这一部分主要将学习如下几个内容:
_______________________________
static 变量、方法
final类、final方法和常量
abstract类和abstract方法
设计模式之模版模式
______________________________

3.1 static 变量、方法

语法与说明
① static关键字用来修饰属性、方法,称这些属性、方法为静态属性、静态方法;
② ③④⑤⑥⑦

⑴ static关键字可以用来修饰变量、方法:
不经过实例化,就可以直接使用类中的static的属性和static的方法;
static的属性,在内存中只有一份,为所有的实例共用。
使用self::关键字访问当前类的静态成员。

实例:3.1.1 静态属性共用特性
 这个实例牵涉到的相关要点是:
static的属性,在内存中只有一份,为所有的实例共用。
使用self::关键字访问当前类的静态成员。

静态属性共用

显示结果是:
Now here have 3 user
Now here have 2 user
上面的实例中,设置了一个$count静态属性,程序运行中,多个实例共用同一个静态$count属性

实例:3.1.2 静态属性直接调用
static的属性,不需要实例化就可以直接使用,在类还没创建时就可以直接使用,
    使用方法是  类名::静态属性名

静态属性直接使用


3.1.3 静态方法
    ●和static的属性一样,static方法不需要所在的类实例化就可以直接使用
    ●静态方法调用静态方法  调用一个类中的其它静态方法有两种:
   
1、直接调用 类名::静态方法名
    2、 self::静态方法名

静态方法调用

记住:self:: 表示当前类的静态成员,与 &this不同,&this 表示当前对象
 
    ●静态方法调用静态属性  调用一个类中其它静态属性也有两种:和上面一样。
    1、直接调用 类名::静态属性名
    2、 self::静态属性

    ●静态方法不能调非用静态属性
    不能使用self::调用非静态属性
    也不能使用 $this获取非静态属性的值

    ●静态方法调非用静态方法
    不能使用$this调用非静态方法
    当一个类的非静态方法被self::调用时,系统会自动为这个方法转化为静态方法

______________________________
3.2 final 类、final方法

语法与说明
① final---用于类、方法前;
② final类---不可以被继承;
final方法---不可以被覆盖;

实例
3.2.1
final类不能被继承
如果我们希望一个类不能被继承,就用final修饰这个类.

Code


______________________________
3.3 常量

语法与说明
① 用const 定义常量,定义了一个常量后,它不能被更改;
② 用 类名::常量名  来调用常量;
书写规则:常量一般用大写字母,几个单词组成的常量,为方便阅读,这立写 MAX_MUNBER

实例

Code


________________________________________________
3.4 abstract类和abstract方法

语法与说明
① 用abstract 修饰的类表示这个类是一个抽象类, abstract 修饰的方法表示这个方法是一个抽象方法
抽象类不能被实例化
抽象方法只有声明,没有方法的实现内容;

实例
3.4.1 抽象类被子类继承后,其子类可以被实例化

Code

单独设置一个抽象类,是没有意义的,只有有了抽象方法,抽象类才有了血肉。

3.4.2 抽象方法
抽象方法只有声明,没有方法的实现内容
抽象方法没有 {}而采用 ; 结束;
③ 在一个类中,只要有一个抽象方法,这个类必须被声明为抽象类;
抽象方法在子类中必须被重写。

Code


3.4.2 抽象类继承抽象类
抽象类继承另一个抽象类,不用重写其中的抽象方法;
抽象类中,不能重写抽象父类的抽象方法

<?php
//抽象类继承抽象类
abstract class User{
    
protected $sal;
    
    
//定义抽象方法
    abstract function getSal();
    
abstract function setSal($sal);    
}

abstract class VipUser extends User {}

?>


________________________________________________
3.5 设计模式——模版模式

posted @ 2009-07-14 08:05  尚远  阅读(407)  评论(0编辑  收藏  举报