不写public不是默认public么?为什么会报错呢?

来源:2-9 PHP类和对象之重载

新手村上路

2019-01-07 02:07

<?php

class Car {

    public $speed = 10;


    //在这里使用重载实现speedDown方法

    function __call($name,$args){

        if($name=='speedDown'){

            $this->speed-=10;

        }

    }

}

$car = new Car();

$car->speedDown(); //调用不存在的speedDown方法

echo $car->speed;


写回答 关注

2回答

  • Mayukiii73
    2019-01-07 21:39:40
    已采纳

    1、什么是重载


    1)PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法,我们是通过魔术方法来实现的。

    2)当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。(屏蔽错误)

    3)所有的重载方法都必须被声明为 public。

    4)属性重载只能在对象中进行。在静态方式中,这些魔术方法将不会被调用。所以这些方法都不能被 声明为 static。

    5)这些魔术方法的参数都不能通过引用传递。


    新手村上路

    好专业。。。

    2019-01-07 22:02:39

    共 1 条回复 >

  • qq_慕圣1057880
    2019-11-28 20:22:28

    属性必须要加public  方法不加就是默认public 

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181728 学习 · 2575 问题

查看课程

相似问题