PHP -- 类和对象基础入门

时间:2024-06-23 00:03:14

     本文目录:   

  1. 创建简单类和对象
  2. 继承
  3. 抽象类
  4. 接口
  5. 构造方法
  6. 析构函数

    1. 创建简单类   

创建一个People的类,在这里有四个要点说明一下:

第一个是在PHP中,访问属性(或者方法)不是用我们所常用的点运算符(.),而是用->。

第二个是在PHP中,方法需要用function在标识,这点于Javascript很类似。

第三点是当我们声明一个变量时,需要用var,这点也与Javascript非常类似。

第四点是在PHP中,也有着public ,protected,private三个与C#同样的访问修饰符,不再赘述。

可以用$p直接访问$name属性,那么我们可以用get()和set()方法对其进行控制

简单例子如下:

<?php
class People
{
var $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
} $p=new People();
$p->SetName("kym");
echo($p->GetName());
?>

    2.继承    

在PHP中,继承和Java是一样的,都使用extends关键字。

我们访问父类在C# 中用base,在Java中用super,但是在PHP中,我们用parent关键字。

在php中,如果我们要访问自身的方法,那么可以用this,也可以用self。

简单示范如下:

class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
}
class Student extends People
{
public function GetName()
{
return "kym";
}
private $grade;
public function SayHello()
{
echo("Good Morning,".self::GetName());
//echo("Good Morning,".$this->GetName());
}
}

    3. 抽象类      

简单例子:

<?php
abstract class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
abstract function SayHello();
}
class Student extends People
{
public function SayHello()
{
echo("Good Morning,".parent::GetName());
}
}
$s=new Student();
$s->SetName("kym");
$s->SayHello();
?>

    4. 接口      

简单例子:

<?php
abstract class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
abstract function SayHello();
}
interface IRun
{
function Run();
}
class Student extends People implements IRun
{
public function SayHello()
{
echo("Good Morning,".parent::GetName());
}
public function Run()
{
echo("两条腿跑");
}
}
$s=new Student();
$s->SetName("kym");
$s->SayHello();
$s->Run();
?>

    5. 构造方法     

简单例子:

<?php
class Person
{
private $name;
private $age;
public function Person($name,$age)
{
$this->name=$name;
$this->age=$age;
}
public function SayHello()
{
echo("Hello,My name is ".$this->name.".I'm ".$this->age);
}
}
$p=new Person("kym",22);
$p->SayHello();
?>

注意:在PHP中并不支持构造函数链,也就是说,在你初始化子类的时候,他不会自动去调用父类的构造方法。

<?php
class Person
{
private $name;
private $age;
public function Person($name,$age)
{
$this->name=$name;
$this->age=$age;
}
public function SayHello()
{
echo("Hello,My name is ".$this->name.".I'm ".$this->age);
}
}
class Student extends Person
{
private $score;
public function Student($name,$age,$score)
{
$this->Person($name,$age);
$this->score=$score;
}
public function Introduce()
{
parent::SayHello();
echo(".In this exam,I got ".$this->score);
}
} $s=new Student("kym",22,120);
$s->Introduce();
?>

6. 析构函数     

析构函数和C#和C++中不同,在PHP中,析构函数的名称是__destructor()。

class Student extends Person
{
private $score;
public function Student($name,$age,$score)
{
$this->Person($name,$age);
$this->score=$score;
}
public function Introduce()
{
parent::SayHello();
echo(".In this exam,I got ".$this->score);
}
function __destruct()
{
echo("卸载啦。。。");
}
}

FROM : http://www.cnblogs.com/kym/archive/2010/02/16/1668651.html

http://www.cnblogs.com/kym/archive/2010/02/16/1668657.html