① php 类的继承问题
在PHP中类的继承是使用最多的一个编程特性,我们可以创建一个基类(父类)然后在这其中定义一些基本的方法,在我们的子类我们可以扩展父类中的方法这就叫覆盖,但是如果说你在父类的某些很关键的方法你不能被子类继承,因为如果子类继承了这个方法可能给程序带来一定的麻烦,所以我们希望这个方法是“私有”的,是不能被扩展的,这在PHP使用了final关键字来修饰你要不被继承的方法。
PHP final关键字可以修饰类同样可以修改类中的方法,但它们的作用是差不多的,即如果你使用了final关键字来修饰了,那么这个被修饰的类或者方法将不能被扩展或者继承。你只能老老实实去引用它。如果你在类前面使用了final,这就是说明这个类不能使用继承;如果你在方法前使用了PHP final关键字,这就是说明这个方法不能被覆盖。
简单的说,final就是防止父类覆盖的,加上它就不会被父类覆盖
② php的继承问题
class mWorktime {
static protected $table = "worktime"; //本类对应的表
}
class mWorktime_tmp extends mWorktime {
static protected $table = "worktime_tmp"; //本类对应的表
static public function delete($id) {
if ($id == 1) {
echo parent::$table;
} else {
echo self::$table;
}
}
}
mWorktime_tmp::delete(1);
mWorktime_tmp::delete(2);
//这样?
③ pphp循环体内的变量能继承吗
私有?还是公共?作用域?什么叫循环体?循环体还不是是在方法里面。问问题还是考虑下再问嘛
④ php继承问题
上面这个例子中B基本上是不存在意义的,也就是无的过程,下面是程序运行过程中B完全没有参与,在$b = new B("b_1", "b_2"),B继承A,然后运行A的构造函数(B没有自己的构造函数)。在$b->print_other($a); 一行中,运行的A的print_other函数,这个是公共函数,请看函数的定义
public function print_other(A $other),这里有类型暗示,也就是函数接受的参数是A类,所以print_other函数使用的参数也是A类,而不是B,B没有直接调用$priv。$priv 不能被继承,但是可以在父类中被调用和输出,只是不能直接用B来访问,B实例化的时候A同样被实例化了,不然如何能够调用父类的属性
下面是这个程序运行过程
0.0014 70936 +712 -> A->__construct($a = 'a_1', $b = 'a_2')
0.0015 71304 +368 -> A->__construct($a = 'other_a_1', $b = 'other_a_2')
0.0016 71680 +376 -> A->__construct($a = 'b_1', $b = 'b_2')
0.0016 71824 +144 -> A->print_other($other = class A { protected $prot = 'a_1'; private $priv = 'a_2' })
0.0017 71928 +104 -> A->print_other($other = class B { protected $prot = 'b_1'; private ${A}:priv = 'b_2' })
0.0018 71928 +0 -> A->print_other($other = class A { protected $prot = 'a_1'; private $priv = 'a_2' })
⑤ PHP私有属性继承问题
你设置了 private $Pname; 为私有变量 就导致了你的派生类是无法访问父类的成员可以使用 protected $Pname 这样就可以使得派生类和基类都能范围该类的成员。 ===你初始化$student=new Student('1','zhangsan','18','男','9月23');后 不用重载parent::IT(); 这样只能echo出父类的那句话。。你要的是覆盖的效果 所以直接echo "$this->Pname 的工作是学生<br>"; 就可以了
⑥ PHP面向对象那个继承是什么意思而construct这个构造函数是什么意思 可以举个例子吗
子类可以继承父类里面的方法可以直接调用,construct这个是初始化,每次执行类里面的方法先要初始化一下在执行你要用的函数,这个里面就可以写一些公用的东西
⑦ thinkPHP 继承的问题
公用变量,在最外层定义,在每个方法中都可以用,
在function _initalize()构造函数中已经给$this->model_name赋值,
所以在 function index中也是有值的,
在构造函数中把CONTROLLER_NAME 答应出来看看 这个就是赋给this->model_name得值
⑧ php的抽象类被子类继承后,子类实例什么访问不了父类的变量
<?php
abstractclassaa{
public$aa;
publicfunctionvvv(){
}
}
classbbextendsaa{
function__construct(){
$this->aa=1;
}
functionvvv(){
echo"-----------".$this->aa;
}
}
$p=newbb();
$p->vvv();
?>
构造方法写错了__construct
⑨ php怎样继承变量
function logged(){
global $db,$sessions,$time_now;
.....
}
⑩ 关于php 构架和继承类的问题和成员变量是什么意思
public function __construct($name,$age,$avirpois,$sex,$height){//定义个构造 构架是起到什么作用的
构造函数就是当你new一个对象的时候自动执行的
$this->name=$name; //继承了父类为什么这里还要调用成员变量
你new zilei("李亚","165"); 执行子类的构造函数,构造函数中给父类的成员变量赋值,并不执行父类的构造方法,要执行的话就要在子类中加parent::__construct