首页> 基础笔记 >PHP基础学习 >面向对象 面向对象
PHP面向对象之抽象方法和抽象类
作者:小萝卜 2019-09-04 【 PHP 面向对象 】 浏览 1469
简介包含这种方法的类必须是抽象类也要使用关键字abstract加以声明。(即使用关键字abstract 修饰的类为抽象类) ,抽象类的特点:不能实例化,也就new成对象,若想使用抽象类,就必须定义一个类去继承这个抽象类,并定义覆盖父类的抽象方法(实现抽象方法)。
PHP面向对象之抽象方法和抽象类
在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法做为外部代码访问其的接口。而抽象方法就是为了方便继承而引入的。
当类中有一个方法,他没有方法体,也就是没有花括号,直接分号结束,象这种方法我们叫抽象方法,必须使用关键字abstract定义。
如: public abstract function fun();包含这种方法的类必须是抽象类也要使用关键字abstract加以声明。(即使用关键字abstract 修饰的类为抽象类)
抽象类的特点:
不能实例化,也就new成对象
若想使用抽象类,就必须定义一个类去继承这个抽象类,并定义覆盖父类的抽象方法(实现抽象方法)。
其实抽象类对于子类(实现类),有一个约束的作用,
含有抽象方法的类肯定是抽象类,但是不是所有的抽象类都必须包含抽象方法。
实例1:
<?php
//声明一个抽象类,要使用abstract关键字标识
abstract class Person {
protected $name; //声明一个存储人的名字的成员
protected $country; //声明一个存储人的国家的成员
pubic function __construct($name="", $country="china") {
$this->name = $name;
$this->country = $country;
}
//在抽象类中声明一个没有方法体的抽象方法,使用abstract关键字标识
public abstract function say();
//在抽象类中声明另一个没有方法体的抽象方法,使用abstract关键字标识
public abstract function eat();
//在抽象类中可以声明正常的非抽象的方法
public function run(){
echo "使用两条腿走路<br>"; //有方法体,输出一条语句
}
}
//声明一个类去继承抽象类Person
class ChineseMan extends Person {
//将父类中的抽象方法覆盖,按自己的需求去实现
public function say() {
echo $this->name."是".$this->country."人,讲汉语<br>"; //实现的内容
}
//将父类中的抽象方法覆盖,按自己的需求去实现
public function eat() {
echo $this->name."使用筷子吃饭<br>"; //实现的内容
}
}
//声明另一个类去继承抽象类Person
class Americans extends Person {
//此处省略 ... ....
}
$chineseMan = new ChineseMan("高洛峰", "中国"); //将第一个Person的子类实例化对象
$americans = new Americans("alex", "美国"); //将第二个Person的子类实例化对象
$chineseMan -> say(); //通过第一个对象调用子类中已经实例父类中抽象方法的say()方法
$chineseMan -> eat(); //通过第一个对象调用子类中已经实例父类中抽象方法的eat()方法
$americans -> say(); //通过第二个对象调用子类中已经实例父类中抽象方法的say()方法
$americans -> eat(); //通过第二个对象调用子类中已经实例父类中抽象方法的eat()方法
实例2:
<?php
//抽象类:
abstract class Demo{
public static function fun1(){
echo "fun1....<br/>";
}
public function fun2(){
echo "fun2....<br/>";
}
public abstract function fun3();
/**
* 求和抽象方法
*
*/
public abstract function add($a,$b);
}
//实现类,定义A类继承Demo类,去实现里面的所有方法。
class A extends Demo{
public function fun3(){
echo "fun3....<br/>";
}
public function add($a,$b){
return $a+$b;
}
}
$a= new A();
$a->fun1();
$a->fun2();
$a->fun3();
echo $a->add(10,20);
很赞哦! (0)
上一篇:PHP接口技术