Php面向对象基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Php面向对象基础相关的知识,希望对你有一定的参考价值。

                              前 言
   这是我来到博客园大家庭所写的第一篇个人博客,以后我也将在这里记录自己所学的点点滴滴。深知还有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(){
...//代码
}

































































以上是关于Php面向对象基础的主要内容,如果未能解决你的问题,请参考以下文章

PHP面向对象——1基础

合并_03php面向对象基础(4days)笔记

php面向对象基础

夯实PHP基础PHP 面向对象

PHP 面向对对象基础(接口,类)

php OOP面向对象基础