抽象类

1.为什么设计抽象类这个技术?

在实际开发中,我们可能有这样一种类,是其它类的父类,但是它本身并不需要实例化,主要用途是用于让子类来继承,这样可以达到代码复用,同时利于项目设计者来设计类。

2.在实现方法覆盖的时候,访问修饰符可以不一样,但是必须满足:子类的访问范围>=父类的访问范围。

例题1.

abstract class Animal{
    public $name;
    public $age;
    abstract public function cry();
    //这个方法没有方法体,这个方法主要是为了让子类去实现。
}
    class Cat extends Animal{
    public function cry(){
    echo "猫猫叫唤";
}
}
//创建一个子类实例
$cat1=new Cat();
$cat1->cry();

使用抽象类的注意事项:
1.格式:abstract class 类名{ //1.方法2.属性 }

2.如果一个类使用abstract 来修饰,则该类就是抽象类,如果一个方法被abstract修饰,则该方法就是抽象方法,(注意:抽象方法就不能有方法体)

3.抽象类可以没有抽象方法,同时还可以有实现了的方法。

例题

abstract class Animal{
    public $name="abc";
    protected $age;
    abstract public function cry();
    pubulic function getNmae(){
    return $this->name;
}
}
class Cat extends Animal{
    public function cry(){
    echo "猫猫叫唤";
}
}
    $cat1=new Cat();
    $cat1->cry();
    echo $cat1->getName();

4.如果一个类中,只要有抽象方法,则该类必须声明为abstract
5.如果A类继承了一个抽象类B,则要求A类实现从B类继承的所有抽象方法。

例题

<?php 
    abstract class A{
    abstract function text();
}
//B类要么自己抽象,或者实现从A类继承的抽象方法

    class B exteds A{
    function text(){
    echo "我实现A:text()";
}
    echo "hello";
}


?>
原文地址:https://www.cnblogs.com/zxl89/p/6048974.html