php有关面向对象继承构造函数初始化的问题?
写几点提示供参考:
1、在类的继承中,扩展或派生出来的类(子类)拥有其基类(父类)的所有变量和函数,并包含所有派生类中定义的部分。
也就说,你上面的在子类里类似
private $debugmessage;
这句代码其实没什么意义。
2、如果你在子类里,又定义了与父类里同名的方法,那么,父类的方法会被覆盖,也就是说,你调用的是子类实现的代码。
3、
this 指向的是当前对象
self 指向当前的类
parent 指向的是父类
php高端功能?
1.使用Per-Class常量。
用途:可以在不需要初始化该类的情况下使用:
例子:
<?php
class Man //定义Man类
{
const birthday = 19960101; //定义常量变量
}
//使用const修饰的变量,我们可以通过::操作符对其进行访问。例如:
echo Man::birthday;
//使用const修饰的变量是无法进行修改的,例如:
// Man::birthday=19990101;
//上面那句是会报语法错误的。
?>
执行结果:打印出变量值 也就是19960101
2.对静态方法的实现
用途:PHP可以在方法前面使用static关键字,该方法就可以在未初始化类的情况下通过类名::来进行调用,类似于上面。例如:
<?php
class Man //创建一个Man类
{
static function boy() //创建静态方法
{
return 'boy'; //函数返回字符串boy
}
}
echo Man::boy(); //打印函数的返回值,也就是boy
//但是在静态方法中,是不能使用this关键字的。因为可能会没有可以引用的对象实例
//通俗点说,就是一般我们调用函数是使用obj->method(),而$this就是当前的对象,但是因为
//我们没有对类进行进行实例化,也就没有所谓的对象,故不能使用。
?>
3.延迟静态绑定
从PHP5.3版本引入了延迟静态绑定(last static binding)的概念。
用途:允许在一个静态继承的上下文中对一个被调用类的引用。父类可以使用子类重载的静态方法。例如:
OOP思想是什么意思?
一、OO二、OOP的核心思想:
三、对OOP的理解:OOP具有三大特点:
1、封装性:也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。
于是开发人员只需要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现MVC分工合作,也能有效避免程序间相互依赖,实现代码模块间松藕合。
2、继承性:就是子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。
继承增加了代码的可重用性。
php只支持单继承,也就是说一个子类只能有一个父类。
3、 多态性:子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。
于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。
多态性增强了软件的灵活性。