大神能否解释下 “受保护的属性与私有属性不允许外部调用,在类的成员方法内部是可以调用的”这句话?何为外部调用和内部调用啊?

来源:2-3 PHP类和对象之类的属性

二狗子啊

2018-03-24 15:00

$car = new Car();
echo $car->name;   //调用对象的属性
echo $car->color;  //错误 受保护的属性不允许外部调用
echo $car->price;  //错误 私有属性不允许外部调用
写回答 关注

5回答

  • XAGT
    2018-07-26 09:47:08

    其实就是封装,这样做比较安全,不容易给人修改,查查封装就右以理解了

  • 菜鸟Wenco
    2018-04-27 08:18:36

    这个要配合前面定义的类来理解

    class Car {
        //定义公共属性
        public $name = '汽车';
    
        //定义受保护的属性
        protected $corlor = '白色';
    
        //定义私有属性
        private $price = '100000';
    }

    在calss Car的花括号{}里面调用就是内部调用,在{}外面调用就是外部调用,只有public可以外部调用,所以才会出现第二个和第三个错误的现象!

  • qq_筱怪_1
    2018-03-28 14:06:58
    class A {
        protected $name = 'aaa';
        protected function getName() {
            return 'hello';
        }
        public function say() {
            return $this->getName();
        }
    }
    
    $a = new A();
    echo $a->name;        // error
    echo $a->getName();   // error
    echo $a->say();       // success

    wish you understand !

  • qq_long妹_0
    2018-03-26 13:45:33

    在定义类的时候,有一个花括号{},在花括号里调用就属于内部调用,在花括号外面调用就属于外部调用。

  • 慕仙0039192
    2018-03-24 16:42:25

    首先类的属性有三种:public 、protected、private。

    public可以在任何地方被调用,而受保护属性和私有属性则不一样。

    私有属性private不允许外部调用,指的的是该属性只能在你声明的类中调用,你声明了Car这个类,就是只能在class Car{}中调用,离开这个类,就不能调用了。

    如果实在要调用,可以使用友元函数来进行调用。

    而受保护属性protected不仅可以在你声明的类中调用,还可以在它的子类中调用。

PHP进阶篇

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

181835 学习 · 2577 问题

查看课程

相似问题