
不可以。
子类会继承父类中的静态方法,相当于在子类中定义了同名的静态方法和成员方法。
这样当在子类上调用该方法时,会产生歧义,因为无法确定调用的是静态还是非静态方法,所以编译器不允许这样的情况发生。
使用self关键字。
php静态方法不能访问这个类中的普通属性,因为那些属性属于一个对象,但可以访问静态属性,从当前类(不是子类)中访问静态方法或属性,可以使用self关键字,self指向当前类,就像this指向当前对象一样,不能再对象中调用静态方法,静态方法和属性又被称为类方法和类属性,因此不能再对象中使用伪变量this。
php,又称超文本预处理器,是一种通用开源脚本语言。其是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。
PHP访问类的属性、方法使用箭头语法(->)。这里我给你一个例子供你参考:
<phpclass 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中如何设置类的属性,如何调用类的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)