导航:首页 > 知识科普 > Php怎么调用父类的方法

Php怎么调用父类的方法

发布时间:2023-01-14 04:32:32

Ⅰ php继承一个父类,如何自动执行父类方法

你在父类写一个成员函数 然后子类继承 创建子类对象的时候 可以点出来父类的成员函数


比如

Student zs = new Student();

zs.SayHello() //点出来的是从父类的继承来的成员函数

输出结果为父类的->我是人类

publicclassPerson
{
publicvoidSayHello()//这只是父类的SayHello
{
echo"我是人类";
}
}

publicclassStudent:Person//已经继承了Person父类
{
//我什么都没写
}


Ⅱ PHP 静态方法怎么调用父类非静态方法

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

Ⅲ php 子类中如何调用父类的变量和方法

<?php class A{ public $a1='a1'; protected $a2='a2'; function test(){ echo "hello!<hr/>"; } } class B extends A{//若A类和B类不在同一文件中 请包含后(include)再操作 public $a1='b1'; function test2(){ $this->test(); parent::test();//子类调用父类方法 } function test() { echo $this->a1.','; echo $this->a2.','; echo "b2_test_hello<hr/>"; } } $a = new B(); $a->test();//b1,a2,b2_test_hello $a->test2();//b1,a2,b2_test_hello//hello! ?>方法的调用:$this->方法名();如果子类中有该方法则调用的是子类中的方法,若没有则是调用父类中的 parent::则始终调用的是父类中的方法。 变量的调用:$this->变量名;如果子类中有该变量则调用的是子类中的,若没有则调用的是父类中的

Ⅳ PHP继承的问题,调用父类的方法this指向问题。

我来说一说:


【一】…………public(仅有)属性和方法的继承…………

classa{
public$var='vara<br/>';
publicfunctionm(){
echo'funa<br/>';
}
publicfunctionrun(){
echo$this->var;
$this->m();
}
}

classbextendsa{
public$var='varb<br/>';
publicfunctionm(){
echo'funb<br/>';
}
}
$li=newb();
$li->run();
echo'<hr>';
var_mp($li);

输出:

varb
funb
————————————————————————————
object(b)[1]
public'var'=>string'varb<br/>'(length=11)

在这段代码中所表示的,是我们常见的一种继承方式,同为公有属性的$var 和公有方法m()


在这里,$var和m()都被继承并覆写,实例化过后,内存中只有一个$var实例,通过var_mp($li);我们可以看到它。



【二】…………private(私有)属性和方法的继承…………

classa{
private$var='vara<br/>';
privatefunctionm(){
echo'funa<br/>';
}
publicfunctionrun(){
echo$this->var;
$this->m();
var_mp($this);
echo'<br/><br/>';
}
}

classbextendsa{
private$var='varb<br/>';
privatefunctionm(){
echo'funb<br/>';
}
publicfunctionrun(){
echo$this->var;
$this->m();
var_mp($this);
echo'<br/><br/>';
parent::run();
}
}
$li=newb();
$li->run();
echo'<hr>';
var_mp($li);

输出:

varb
funb
object(b)[1]
private'var'=>string'varb<br/>'(length=11)
private'var'(a)=>string'vara<br/>'(length=11)
.
.
vara
funa
object(b)[1]
private'var'=>string'varb<br/>'(length=11)
private'var'(a)=>string'vara<br/>'(length=11)
.
————————————————————————————————
object(b)[1]
private'var'=>string'varb<br/>'(length=11)
private'var'(a)=>string'vara<br/>'(length=11)

这个时候,我们可以看到,在调用run方法时,首先它会调用到b类的私有属性$var 和私有方法m(),随后,又使用parent::run()调用父类的run()方法,我们可以看到,父类的run()方法调用后,它所调用的属性和方法,都是a类的两个私有属性和方法,这种形式,和你的问题一致;


而它与$this指向无关,我们可以在这里看到,两个$this都是指向b类。


而最有意思的是,在$li句柄中,我们却看到了两个属性!一个是b类的属性,一个是a类的属性,这两个属性同时存在着,那么,私有方法也自然是同时存在着。


【三】…………私有属性和方法能不能被继承…………

classa{
private$var='vara<br/>';
privatefunctionm(){
echo'funa<br/>';
}
}
classbextendsa{
publicfunctionrun(){
echo$this->var;
$this->m();
}
}
$li=newb();
$li->run();

输出:

Notice:Undefinedproperty:b::$varinE:...onLine9
Fatalerror:Calltoprivatemethoda::m()fromcontext'b'inE:...onLine10

这可以证明,私有属性和方法,无法被继承,所以,你的代码示例中所说,将a类的m()方法更改为private后,会显示aa的属性,也就可以理解明白了。

Ⅳ PHP怎么在子类用父类的魔术方法

父类的魔术方法:
function __construct()
{
echo '我是父类的构造函数(魔术方法)';

}

function __unset()
{
echo '我是父类的销毁方法(魔术方法)';

}
子类调用
function index()
{
parent::__construct();

parent::__unset();

}
输出:
我是父类的构造函数(魔术方法)
我是父类的销毁方法(魔术方法)

Ⅵ php的子类能够调用父类的方法么

<?php
classA{
functiontest(){
echo"hello!";
}
}
classBextendsA{//若A类和B类不在同一文件中请包含后(include)再操作
functiontest2(){
parent::test();//子类调用父类方法
echo"test2";
}
}
$a=newB();
$a->test();//hello!
$a->test2();//hello!test2
?>

Ⅶ PHP子类怎么调用父类的属性

父类的Pname

private
类型,也就是私有的只能父类自己的
函数调用
,子类以及外部是无法调用的。
如果这个变量只允许本类方法调用
应该用
private
方式调用,如果允许本类以及子类调用应该用
protected
保护)修饰,如果希望外部调用则应该用
public
公开修饰。这三个关键词对函数同样有效。
我把php.net关于这个的说明放在下面参考资料里面了,你可以仔细看下。

Ⅷ php子类怎么调用父类方法

<?php
classA{
staticpublic$m=1;
staticpublicfunctionm(){
echostatic::$m,'';
}
staticpublicfunctionn(){
static::n();
}
publicfunctionl(){
echo'父类方法';
}
}
classBextendsA{
staticpublic$m=111;
staticpublicfunctionm(){
parent::m();
}
staticpublicfunctionn(){
echoparent::$m,'';
}
}
B::m();
B::n();
$b=newB();
$b->l();

Ⅸ PHP子类怎么调用父类的属性

<?php
class Perpon {
private $Pid;
private $Pname;
private $Page;
private $Psex;
private $Pbirthday;

public function __construct($Pid,$Pname,$Page,$Psex,$Pbirthday)//PHP5中间的构造函数
{ $this->Pid=$Pid;
$this->Pname=$Pname;
$this->Page=$Page;
$this->Pbirthday=$Pbirthday;
echo "创建了一个对象"."<br>";
}
public function __set($name,$value) {
$this->$name=$value;
}
function show(){
echo ("我的姓名:$this->Pname,我的年龄:$this->Page,我的性别是:$this->Psex,我的生日是$this->Pbirthday <br>"); }

public function __get($name) { return $name; }
public function dining() { echo "$this->Pname 正在吃饭 <br>"; }
public function shuohua() { echo "$this->Pname喜欢说话 <br>"; }
public function gaosu() { echo "我的姓名叫做$this->Pname <br>"; }
public function IT() { echo $this->Pname."的工作是IT行业 <br>"; }
}

class Student extends Perpon {
public function __construct()//PHP5中间的构造函数
{ echo "子类的构造函数"; }

public function IT()//PHP5中间的构造函数
{ parent::IT();
echo $this->Pname."的工作是学生<br>";
}
}
$perpon=new Perpon('1','zhangsan','18','男','9月23'); $perpon->show(); $perpon->dining(); $perpon->shuohua(); $perpon->gaosu(); $perpon->IT();
echo "<hr>";
$student=new Student(); $student->IT();?>

调不到的原因是:
private $Pname;
记住:private只能自己调用,其他是不行的,这一点你自己记住即可。

Ⅹ php中子类有构造函数如何调用父类中的构造函数,最好能举个简单的例子

class A{
function __contruct($num){
echo "aaa";
}
}
class B extends A{
function __contruct(){
echo "bbb";
A:: __contruct($num) //第一种调用父类构造函数的方法
parent:: __contruct($num) //第二种调用父类构造函数的方法
}
}

阅读全文

与Php怎么调用父类的方法相关的资料

热点内容
java类的构造方法有什么用 浏览:626
提高手机照片质量的方法 浏览:779
核心投资方法和技巧 浏览:838
孔隙水压力计算方法 浏览:723
棋盘法可以用什么方法代替 浏览:950
精油护发使用方法 浏览:330
干疮的最土治疗方法 浏览:219
高粱标准水分检测方法 浏览:651
卡纸制作房子简单方法 浏览:831
如何克服猛兽的方法 浏览:659
花岗岩异形抛光最佳方法 浏览:25
调研报告的分析方法 浏览:400
如何自制辣椒酱的方法 浏览:972
羊肚菌的种植方法和技术管理 浏览:144
俄罗斯人都有哪些做薯仔的方法 浏览:545
酸度检测国标方法有 浏览:200
更新手机系统几种方法 浏览:374
手指头有点发黄怎么治疗方法 浏览:463
如何降薪最快的方法 浏览:257
九朵云加马油使用方法 浏览:160