php怎么获取父类函数里面的变量值

php怎么获取父类函数里面的变量值,第1张

<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->变量名;如果子类中有该变量则调用的是子类中的,若没有则调用的是父类中的

一,"如何在子类重写(覆盖)父类的方法"
这个术语叫“重载”。很简单,首先把父类方法原封复制到子类里,然后修改函数体就可以。注意函数签名不能变。
二,如何在子类方法中调用父类方法的变量值来用
这是做不到的,不可能在一个函数中调用另一个函数的局部变量。父类的属性是有可能用的,因为子类会继承父类的public和protected属性。

先小小纠正一下,java里面一般不叫函数,叫方法,这是Java的一个小习惯。

你这个问题原因很简单。

首先,任何类都有构造方法,难怕是你不写,也会默认你有一个有无参构造方法。,所以你的A里面就会有一个叫A()的构造方法。

当你new A()时,默认你有一个有无参构造方法A()的方法里的第一句,会自动加上一个super();的方法,这句就是调用父类构造方法的意思,这是java规定的规则。

你可以尝试一下,在A里写一个构造方法:

A(){

super();   //这个一定要放在第一句

SystemoutXX;

}

这与你不写super()这句效果是一样的,因如果没写,java会默认在第一句加上super。

1构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;

2构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;

3构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;

4当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数此默认构造函数是不带参数的。而一般的方法不存在这一特点;

5构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)

6当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。[1]

7在Python中构造函数必须通过重写__init__方法实现


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

原文地址: http://outofmemory.cn/yw/13394998.html

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

发表评论

登录后才能评论

评论列表(0条)

保存