zoukankan      html  css  js  c++  java
  • 抽象类

    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";
    }
    
    
    ?>
  • 相关阅读:
    js设计模式 -- 装饰模式
    前端项目开发(持续补充中)
    URL地址解析
    line-height有无单位区别
    HTTP请求Response Headers
    HTTP请求Request headers
    docker快速入门
    关于layui动态生成文件上传按钮后点击无效的解决办法
    未证实的一个BUG
    实现一个简单的概率发奖问题
  • 原文地址:https://www.cnblogs.com/zxl89/p/6048974.html
Copyright © 2011-2022 走看看