php中相同名称的方法,父类方法为静态子类能否为非静态方法

php中相同名称的方法,父类方法为静态子类能否为非静态方法,第1张

不可以。

子类会继承父类中的静态方法,相当于在子类中定义了同名的静态方法和成员方法。

这样当在子类上调用该方法时,会产生歧义,因为无法确定调用的是静态还是非静态方法,所以编译器不允许这样的情况发生。

使用self关键字。

php静态方法不能访问这个类中的普通属性,因为那些属性属于一个对象,但可以访问静态属性,从当前类(不是子类)中访问静态方法或属性,可以使用self关键字,self指向当前类,就像this指向当前对象一样,不能再对象中调用静态方法,静态方法和属性又被称为类方法和类属性,因此不能再对象中使用伪变量this。

php,又称超文本预处理器,是一种通用开源脚本语言。其是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。

PHP访问类的属性、方法使用箭头语法(->)。这里我给你一个例子供你参考:

<php

class MyClass { // 定义MyClass类

    public $name; // 定义了一个公有属性

    protected $_age; // 定义了一个保护属性

    private $_email; // 定义了一个私有属性

    

    public function my_method() { // 定义my_method方法

    }

    

    protected function _my_method2() { // 定义_my_method2方法

    }

}

$obj = new MyClass; // 实例化

$obj->name = 'noname'; // 设置name属性

$obj->_age = 12; // 这是错误的,不能设置保护属性

$obj->address = 'King Street' // 设置一个未声明的属性是允许的,效果和公有属性类似,但未赋值前不能使用。

$obj->my_method() // 调用公有方法

$obj->_my_method2(); // 这是错误的,不能调用保护方法

你需要理解继承、公有、保护和私有的概念。

继承:子类继承父类的公有、保护属性和方法。

公有:类的实例可以访问的属性和方法。

保护:只能在类的内部及其子类内部访问的属性和方法。

私有:只能在类的内部访问的属性和方法。

这是个很基础的问题,建议你多看书。

子类的静态方法里面实例化父类,然后调用父类的非静态方法。

因为子类的静态方法调用父类的方法需要使用parent::函数名()或有可能是self::函数名(),子类的静态方法使用parent::函数名()或有可能是self::函数名()时这个函数名()必须是父类里面的一个静态方法,如果不是静态方法,会报错Strict Standards: Non-static method parentClass::b() should not be called statically,但是还是会有正确结果哟

以上就是关于php中相同名称的方法,父类方法为静态子类能否为非静态方法全部的内容,包括:php中相同名称的方法,父类方法为静态子类能否为非静态方法、php静态方法如何运行后触发某个方法、在php中如何设置类的属性,如何调用类的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10136295.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存