问答详情
源自:6-1 课程总结

在面向对象编程中属性可以调用方法么?

静态方法与非静态方法的区别是什么?

方法可以调用方法么?

提问者:我叫孟小跳灬 2016-03-18 18:34

个回答

  • dayu_
    2016-03-19 21:21:29
    已采纳

    class Test{
        public $a = 'c';
        public static function b(){
            echo 'staticFunctionB';
        }
        public function c(){
            self::b();
        }
    }
    $instance = new Test();
    $attr1 = $instance->a;
    $instance->$attr1(); // 在此使用 $instance->($instance->a)(); 会报错

    上面为一个例子:类中包含一个 $a 值为 'c',实例化后将其值赋值给一个变量,然后用变量调用类方法,在类中进行函数间调用。

    • 在面向对象编程中属性可以调用方法么?

    按照你说的,强行用一个属性调用了,应该没什么意义。你可以自己更全面试试。

    • 静态方法与非静态方法的区别是什么?

    静态可以直接使用类名调用,比如可以处理一些固定不变的数据或一些固定不变的操作,注意不要在静态方法里掺入任何变量,否则会报错,因为静态不需要声明就可以使用类名调用,而你将一些必须实例的变量传进去当然会报错。

    • 方法可以调用方法么?

    上述例子就是方法调用方法,方法 c 调用静态方法 b。


    一个自学者的粗浅见解,希望可以帮助到你,如果有什么不对的请告知我,我愿意去更深入的学习,谢谢。

  • 梦幻弥漫
    2017-03-15 11:44:08

    回答的很好,对我们初学者帮助很大