php中的静态类和抽象类的使用

本文详细解析了抽象类和接口的概念及其主要区别,包括抽象类的特性如不可实例化、抽象方法的实现要求,以及接口的公共方法规定和实现方式。通过代码示例展示了抽象类和接口的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象类和接口的区别:

       抽象类:(抽象类是通过abstract)
       1.抽象类不能被实例化
       2.方法被声明为静态时,此类必须被声明为静态类
       3.抽象类中可以没有静态方法
       4.抽象方法中不能定义具体功能实现
       5.继承抽象类的子类必须实现抽象类中的所有抽象方法(控制权限只能比他放宽)
       6.抽象类中的方法不能被声明为private私有,因为抽象类是为了便于子类继承去实现


       接口:(接口是通过 interface,对接口的使用方式是通过关键字implements来实现的)
       1.接口中定义的所有方法都必须是公有的
       2.继承接口的类必须实现接口方法

class People{
         //声明一个静态变量
         public static $country = "chinese";
         public $myparam = "姓名";
         //声明一个静态方法
         public static function StaticFun(){
             return self::$country."===".static::$country;
         }
         //非静态方法中可以调用常规变量和静态变量
         public function getParam(){
             return $this->myparam."==".self::$country;
         }
    }
    
    class Person extends People{
        public function funStatic(){
            //调用父类中的变量或者静态方法
            return parent::$country."===".parent::StaticFun();
        }
    }

    //静态类的使用可以直接实例化通过对象去访问也可以不实例化直接用类名::直接去访问
    $p = new People();
    $p1 = new Person();
    echo $p->StaticFun()."<br>";
    echo People::$country."<br>";
    echo People::StaticFun()."<br>";
    echo $p->getParam()."<br>";
    echo $p1->funStatic()."<br>";
    echo Person::$country;

     /*
         (1).类中存在抽象方法时,类必须声明为静态类
         (2).静态类中可以存在非静态方法或者不存在静态方法
         (3).静态方法不能定义其具体的功能实现
         (4).抽象类中的抽象方法 继承的子类必须全部实现

         (5).抽象类不能被声明为private私有,否者子类无法继承实现
      */

 

     abstract class AbstractClass{

          abstract public function getValue();
          abstract public function getValue1();
          public function printEcho(){
              echo "shuju";
          }
     }
     abstract class SonAbstractClass extends AbstractClass{
         abstract function good();
     }

     class SonClass extends SonAbstractClass{
         public function getValue(){
             echo "哈哈"."<br>";
         }
         public function good(){
             echo "sdfsdfsdfsd";
         }
         public function getValue1(){

             echo "sdsfsdfd";
         }

     }

    $son = new SonClass();
    $son->getValue();
    $son->printEcho();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值