PHP类实例教程17:abstract类和abstract方法

正文开始

<p>来源:http://blog.csdn.net/klinghr/article/details/5212952</p><p>可以使用abstract来修饰一个类或者方法。</p><br />用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。<br /><br />抽象类不能被实例化。<br /><br />抽象方法是只有方法声明,而没有方法的实现内容。<br />abstract 抽象类<br /><br />可以使用abstract来修饰一个类。<br /><br />用abstract修饰的类表示这个类是一个抽象类。<br /><br />抽象类不能被实例化。<br /><br />这是一个简单抽象的方法,如果它被直接实例化,系统会报错。<br />[PHP] view plain copy<br /><br />     <br /><br />下面例子的 NormalUser 继承自 User类,就可以被实例化了。<br /><br />[php] view plain copy<br /><br />     <br /><br />单独设置一个抽象类是没有意义的,只有有了抽象方法,抽象类才有了血肉。下面介绍抽象方法。<br />abstract 抽象方法<br /><br />用abstract修饰的类表示这个方法是一个抽象方法。<br /><br />抽象方法,只有方法的声明部分,没有方法体。<br /><br />抽象方法没有 {} ,而采用 ; 结束。<br /><br />一个类中,只要有一个抽象方法,这个类必须被声明为抽象类。<br /><br />抽象方法在子类中必须被重写。<br /><br />下面是一个抽象类,其中有两个抽象方法,分别是 setSal() 和 getSal()。用来取回 $sal 员工的工资。<br /><br />[php] view plain copy<br /><br />     <br /><br />既然User类不能被直接实例化,我们写一个NormalUser类继承自User类,再直接实例化。当我们写成如下代码时,系统会报错。 这个错误告诉我们,在 User类中有两个抽象方法,我们必须在子类中重写这两个方法。<br /><br />[php] view plain copy<br /><br />       <br /><br />下面例子,重写了这两个方法,虽然方法体里面 {} 的内容是空的,也算重写了这个方法。注意看重写方法的参数名称,这里只要参数数量一致就可以,不要求参数的名称必须一致。<br /><br />[php] view plain copy<br /><br />     <br /><br />下面19-21行,三种写重写的方式都会报错。<br /><br />19行,缺少参数。<br /><br />20行,参数又多了。<br /><br />21行,参数类型不对。(这种写法在以后章节介绍)<br /><br />一个类中,如果有一个抽象方法,这个类必须被声明为抽象类。<br /><br />下面这个类不是抽象类,其中定义了一个抽象方法,会报错。<br /><br />[php] view plain copy<br /><br />     <br /><br />抽象类继承抽象类<br /><br />抽象类继承另外一个抽象类时,不用重写其中的抽象方法。<br /><br />抽象类中,不能重写抽象父类的抽象方法。<br /><br />这样的用法,可以理解为对抽象类的扩展<br /><br />下面的例子,演示了一个抽象类继承自另外一个抽象类时,不需要重写其中的抽象方法。<br /><br />[php] view plain copy<br /><br />     <br /><br />抽象类在被继承后,其中的抽象方法不能被重写。<br /><br />如果发生重写,系统会报错。<br /><br />[php] view plain copy<br /><br />     <br /><br />抽象类继承抽象类,目的对抽象类的扩展。<br /><br />[php] view plain copy<br /><br />     <br /><br />在PHP5.1中,抽象类中支持静态抽象方法。下面这个例子,看到静态抽象方法可以声明。实现这个方法时,必须是静态的方法。<br />静态抽象方法<br /><br />在PHP5.1中,抽象类中支持静态抽象方法。下面这个例子,看到静态抽象方法可以声明。实现这个方法时,必须是静态的方法。<br /><br />[php] view plain copy<br /><br />     <br />    //这里的抽象方法好像没有问题   <br />

正文结束

PHP接口(interface)和抽象类(abstract) PHP发送POST请求的三种方式