前 言
这是我来到博客园大家庭所写的第一篇个人博客,以后我也将在这里记录自己所学的点点滴滴。深知还有5个月不到的时间就要面临找工作的窘境,但我还是想坚持有时间了就来写点东西。尽管在写这段前言的时候,我感觉我可以在看点其他的知识,但我还是想坚持下去,坚信会有不一样的收货。在这里引用今早读的一篇文章的话来激励一起走在IT路上你和我,至于为何需要一些激励,也许以前你有有过,也许未来你会有这样的迷茫:Where should I go? and why shuold I go here? 至少现在的自己不再是那么迷茫。“局促不安只能使人无所作为,只要关注最基本的东西,其他东西都会随之而来的。Just do it!”,与君共勉。
1.什么是构造函数?
构造函数是对给定的类或对象进行初始化(实例化)时执行的方法,一般用_construct()来表示,当使用new操作符在内存中创建类的新对象(实例)时他就会被调用,构造函数无需引用,在new的时候它会自动被引用和执行。
来个例子:
<?php
class Person{
private $name;
private $age;
function _construct($name,$age){ //构造函数
this->name = $name;
this->age = $age;
}
function personal_info(){
echo "我的名字是$this->name,我今年$this->age岁。\n";
}
function _destruct(){ //析构函数
echo "我是来释放资源滴!";
}
}
$p1 = new Person("小蜗牛",25);//新建Person类的一个对象p1
$p1->personol_info();//调用Person类的personal_info()方法
?>
2.什么是析构函数?
在上面的例子中我们在Person类的最后定义了一个函数_destruct(),这就是析构函数,在脚本执行完毕后,所有的对象都会自动调用析构函数,来清理资源。
当然还可以用unset()函数来消除对象,但一般都不会显示调用unset()函数,该函数一般用于节省内存。
3.成员变量前的private和protected区别?
private用于定义私有的成员变量,通过private定义的类的成员变量,只能在本类的方法中可见;protected用于定义受保护的类,通过protected定义的类的成员变量,只能在本类或子类或父类的方法中可见。
4.类的继承和重载
首先,我们来看一个例子:
<?php
class Person{
protected $name;
protected $age;
function _construct($name,$age){
$this->name = $name;
$this->age = $age;
}
function personal_info(){
echo "我的名字是$this->name,我今年$this->age岁。";
}
function _destruct(){
echo "我是来清理内存滴!";
}
}
class Man extends Person{ // extends 用于类继承
protected $height;
function _construct($name,$age,$height){
parant::_construct($name,$age,$height);//父类的函数可以通过parent::结构在子类中调用
$this->height = height;
}
function personal_info(){
parent::personal_info();
echo "我的身高是$this->height。\n";
}
function _destruct(){
parent::_destruct();
}
}
$man1 = new Man("小蜗牛",25,180);
$man1->personal_info();
$p2 = new Person("老蜗牛",50);
$p2->personal_info();
?>
php中使用关键字extends继承一个类,php不支持多继承,即一个类只能有一个父类。
当从父类继承的方法不能满足子类的需求时,可以对继承的类进行改写,这个过程叫做覆盖或者重载。php中函数重载与C++中不同,C++中意为函数具有相同函数名称,但是参数类型不同。
当类中的方法标记为"final"时,该方法不能被重载。
final function personal_info(){
...//代码
}