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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/enjoy_sun_moon/article/details/81013954

重载:首先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将会调用父类中的方法。

猜你喜欢

转载自blog.csdn.net/enjoy_sun_moon/article/details/81013954