多语言展示
当前在线:145今日阅读:167今日分享:16

php的抽象类及抽象方法

在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公用方法作为外部代码访问它的接口
方法/步骤

在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公用方法作为外部代码访问它的接口。而抽象方法就是为了方便继承而引入的。本节中先来介绍一下抽象类和抽象方法的声明,然后再说明其用途。在声明抽象类之前,我们先了解一下什么是抽象方法。抽象方法就是没有方法体的方法,所谓没有方法体是指在方法声明时没有花括号及其中的内容,而是在声明方法时直接在方法名后加上分好结束。另外在声明抽象方法时,还要使用关键字abstract来修饰。声明抽象方法的格式如下所示: Abstract function fun1();    //不能有花括号,就更不能有方法体中的内容了Abstract function fun2();     //直接在方法名的括号后面加上分好结束,还要使用abstract修饰只要在声明类时有一个方法是抽象方法,那么这个类就是抽象类,抽象类也要使用abstrat关键字来修饰.在抽象类中可以有不是抽象的成员方法和成员属性,但访问权限不能使用private关键字修饰为私有的。下面例子在Person类中声明了两个抽象方法say()和eat(),则Person类就是一个抽象类,需要使用abstract标识,代码如下:name = $name;  $this->country = $country;} //在抽象类中声明一个没有方法体的抽象方法,使用abstract关键字标识Abstract function say(); //在抽象类中声明另一个没有方法体的抽象方法,使用abstract关键字标识Abstract function eat(); //在抽象类中可以声明正常的非抽象的方法Function run(){         Echo “使用两条腿走路
”;  //有方法体,输出一条语句}        }在上例中声明了一个抽象类Person,在这个类中定义了两个成员属、一个构造方法和两个抽象方法,还有一个非抽象的方法。抽象类就像是一个”半成品”的类,在抽象类中有没有被实现的抽象方法,所以抽象类是不能被实例化的,即创建不了对象,也就不能直接使用它。既然抽象类是一个”半成品”的类,那么使用抽象类有什么作用呢?使用抽象类包含了继承关系,它是为它的子类定义公共接口,将它的操作交给子类去实现。就是将抽象类作为子类重载的模板使用,定义抽象类就相当于定义了一种规范,这种规范要求子类去遵守。当子类继承抽象类以后,就必须把抽象类中的抽象方法按照子类自己的需要去实现。子类必须把父类中的抽象方法全部都实现,否则子类中还存在抽象方法,所以还是抽象类,也不能实例化对象。在下例子中声明了两个子类,分别实现上例中声明的抽象类Person.name.”是”.$this->country.”人,讲汉语
”;  //实现内容}    //将父类中的抽象方法覆盖,按自己的需求去实现  Function eat(){  Echo $this->name.”使用筷子吃饭
”;  //实现内容}} //声明另一个类去继承抽象类PersonClass Americans extends Person{  //将父类中的抽象方法覆盖,按自己的需求去实现  Function say(){  Echo $this->name.”是”.$this->country.”人,讲英语
”;  //实现内容}    //将父类中的抽象方法覆盖,按自己的需求去实现  Function eat(){  Echo $this->name.”使用刀子和叉子吃饭
”;  //实现内容} } $chinaeseMan = new ChineseMan(“高老庄”,”中国”);  //将第一个person的子类实例化对象$americans = new Americans(“alax”,”美国”);  //将第二个person的子类实例化对象 $chinaeseMan->say();   //通过第一个对象调用子类中已经实例父类中抽象方法的say()方法$chinaeseMan->eat();   //通过第一个对象调用子类中已经实例父类中抽象方法的eat()方法 $ americans ->say();   //通过第二个对象调用子类中已经实例父类中抽象方法的say()方法$ americans ->eat();   //通过第二个对象调用子类中已经实例父类中抽象方法的eat()方法

推荐信息