抽象类

Posted 向前看!明天会更好!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类相关的知识,希望对你有一定的参考价值。

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";
}


?>

 

以上是关于抽象类的主要内容,如果未能解决你的问题,请参考以下文章

查看发票组代码后的总结和有感

使用 Git 来管理 Xcode 中的代码片段

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)

记一次抽象类中定义的静态变量,多个子类继承后,在方法中被重写引起的问题

Java 封装