php面向对象之抽象类
2014-04-01 19:48
316 查看
抽象类不能直接被实例化,你必须先继承该抽象类,然后再实例化子类。
如果类方法被声明为抽象的,那么其中就不能包括具体的功能实现,并且这个类必须声明为抽象类
抽象类,不一定有抽象方法,可能全是具体方法,对于这种情况,此类依然不能直接实例化.再用普通类继承一下就可以了.
继承一个抽象类的时候,子类必须实现抽象类中的所有抽象方法;另外,这些方法的可见性 必须和抽象类中一样(或者更为宽松)。如果抽象类中某个抽象方法被声明为protected,那么子类中实现的方法就应该声明为protected或者public,而不 能定义为private。
用普通类做父类,当模板,子类对其某个方法,可以重写,也可以不重写.
用抽象类时,抽象方法必须被重写,才能使用.
抽象类比普通父类有如下好下:
一是:指定的方法,必须去重写,实现.
二是: 重写时,参数也必须与父类的相应方法一致.
如果继承抽象类的子类也是抽象类,覆写父类的抽象方法可以以如下方式写:
如果类方法被声明为抽象的,那么其中就不能包括具体的功能实现,并且这个类必须声明为抽象类
抽象类,不一定有抽象方法,可能全是具体方法,对于这种情况,此类依然不能直接实例化.再用普通类继承一下就可以了.
继承一个抽象类的时候,子类必须实现抽象类中的所有抽象方法;另外,这些方法的可见性 必须和抽象类中一样(或者更为宽松)。如果抽象类中某个抽象方法被声明为protected,那么子类中实现的方法就应该声明为protected或者public,而不 能定义为private。
用普通类做父类,当模板,子类对其某个方法,可以重写,也可以不重写.
用抽象类时,抽象方法必须被重写,才能使用.
抽象类比普通父类有如下好下:
一是:指定的方法,必须去重写,实现.
二是: 重写时,参数也必须与父类的相应方法一致.
<?php abstract class welcome { abstract function greet($a,$b,$c); abstract function bye(); } class engwelcome extends welcome{ public function greet($a,$b) { echo 'welcome<br />'; } public function bye() { echo 'bye<br />'; } } $ming = new engwelcome(); $ming->greet(3,4);//报错:Fatal error: Declaration of engwelcome::greet() must be compatible with that of welcome::greet() ?>
如果继承抽象类的子类也是抽象类,覆写父类的抽象方法可以以如下方式写:
<?php abstract class human { abstract public function m1(); abstract public function m2(); protected function getVal($val){ echo $val; } } abstract class stu extends human{ public function m1() { echo 'm1<br />'; } } abstract class banhua extends stu { public function m2() { echo 'm2<br />'; } } class jin extends banhua { } $jin = new jin(); $jin->m2(); ?>总之,必须保证父类的抽象方法全部实现覆写。
相关文章推荐
- PHP面向对象--抽象类
- php面向对象(OOP)—抽象方法和抽象类
- Php面向对象 -- 抽象类
- 【PHP面向对象(OOP)编程入门教程】19.抽象方法和抽象类(abstract)
- PHP 面向对象:抽象类继承抽象类
- PHP面向对象(OOP):抽象方法和抽象类(abstract)
- php面向对象之抽象类
- php面向对象之抽象类
- PHP入门(8) 面向对象(2) 抽象类
- php面向对象之抽象类和接口
- PHP面向对象 1.8 抽象类与接口
- PHP 面向对象:抽象类继承抽象类
- [李景山php] 深入理解PHP内核[读书笔记]--第五章:类和面向对象 --类的继承,多态及抽象类
- 学习PHP面向对象(九) 抽象类
- php面向对象之-抽象类-131
- PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
- php面向对象(三),抽象类,抽象方法,接口及php的”重载“
- php面向对象之抽象类和接口理解
- PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
- 【代码总结】PHP面向对象之抽象类