14、php面向对象3(final、显示调用父类构造方法、static静态变量与方法)

文章详细阐述了PHP中关于类的一些核心概念:final关键字用于防止方法和类的继承,子类必须显式调用父类的构造方法,static关键字定义静态属性和方法,以及子类如何处理带参数的父类构造方法。这些内容揭示了PHP面向对象编程的基础知识。

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

1、如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

<?php
class BaseClass{
    public function test(){
        echo "BaseClass::test() called".PHP_EOL;
    }
    final public function moreTesting(){
        echo "BaseClass::moreTesting() called".PHP_EOL;
    }
}

class subClass extends BaseClass{
    public function moreTesting(){//父类声明为final,子类无法重载
        echo "subClass::moreTesting() called".PHP_EOL;
    }
}
?>

2、PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。

<?php
class BaseClass{
    function __construct(){
        print "baseclass类中构造方法".PHP_EOL;
    }
}

class SubClass extends BaseClass{
    function __construct(){
        parent::__construct();//显示调用父类构造方法
        print"subclass类中构造方法".PHP_EOL;
    }
}

class OtherSubClass extends BaseClass{

}

$obj=new BaseClass;//父类构造方法

$obj=new SubClass;//先调用父类,再调用子类

$obj=new OtherSubClass;

?>

执行结果:

3、static定义静态属性与方法

  • 声明类属性或方法为 static(静态),就可以不实例化类而直接访问。
  • 由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
  • 静态属性不可以由对象通过 -> 操作符来访问。

 

<?php
class Foo{
    public static $mystatic="foo";

    public static function staticValue(){
       // echo $this->$mystatic;//this在静态方法中不可用
        return self::$mystatic;
    }
}

print Foo::$mystatic.PHP_EOL;

$foo=new Foo;

print Foo::$mystatic;//直接用类名访问静态变量
print foo::$mystatic;//用实例化对象访问静态变量
//print $foo->$mystatic;//静态属性不可以由->操作符来访问。
print $foo->staticValue().PHP_EOL;//用实例化对象访问静态方法
print Foo::staticValue().PHP_EOL;//直接用类名访问静态方法

?>

运行结果:

 4、子类继承父类带有参数的构造方法。

<?php
class students{
    var $name,$age,$sex;
    function __construct($name,$age,$sex){
        $this->name=$name;
        $this->age=$age;
        $this->sex=$sex;
    }
}

class master extends students{
    var $hobby,$address;
    function __construct($name,$age,$sex,$hobby,$address){
        parent::__construct($name,$age,$address);//执行父类构造方法
        $this->hobby=$hobby;
        $this->address=$address;
    }

}
$m=new master("PHP","20","female","ok","usa");
?>

PHP是世界上最好的编程语言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值