面向对象 --重载,常量,延迟绑定

本文对比了PHP与Java中方法重载的实现方式,并深入探讨了PHP中的重写、延迟绑定等特性,通过具体代码示例说明了self与static关键字的区别。

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

重载:首先PHP中不能有相同的方法名存在,但是在java中可以有相同的方法名存在单数参数的类型或者个数必须不相同。

java是强类型可以根据传入参数的个数和类型来判断调用相同方法名中的哪个个方法,但是PHP中只能有一个所以无法实现java这样的数据结构,但是PHP运用func_get_args()这个函数来获取传入参数的个数,以此来判断个数在进行逻辑分析。

重写:就是子类中将父类中相同方法名方法 覆盖

类常量前不用加修饰符,其实就是无法修改值的静态属性,跟静态属性的访问方法一致。

延迟绑定:self和static的区别

<?php
    class A{
        public function m(){
            echo  "class A<br>";
        }
        public function m1(){
            echo self::m();
        }
        public function m2(){
            echo static::m();
        }
    }
    class B extends A{
        public function m(){
            echo  "class B<br>";
        }
    }
    $b = new B();
    $b->m1();  打印结果:classA
    $b->m2();  打印结果:classB
    $b->m2();  //如果将classB 中的m()方法注释掉  打印结果:classA
?>

总结:self代表你调用的方法所属的类,比如调用父类中的方法那么self就是父类  self调用的方法就是父类中的方法。

          static代表最初调用的类  比如如果调用父类中的方法的话static依然代表子类 调用的方法依然是子类中的方法,如果static调用的方法子类中不存在,而父类中存在,那么static将会调用父类中的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值