PHP面向对象的程序设计2

来源:互联网 发布:spark要用java吗? 编辑:程序博客网 时间:2024/05/21 07:11

 封装性:封装性是面向对象编程中的三大特性之一,就是把对象的成员属性和成员方法结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节。

私有成员:private关键字就实现了对成员的封装,封装后的成员在对象的外部不能被访问,但在对象内部的成员方法中可以访问到。
魔术方法__set():是一种可以控制成员的方法,经过公有方法间接为私有属性赋值时,可以在方法中做一些条件限制
魔术方法__get(0:如果在类中声明了__get()方法,则直接在对象的外部获取私有属性的值时,会自动调用此方法,返回私有属性的值,并且可以在__get()方法中根据不同的属性,设置一些条件来限制对私有属性的非法取值操作。

   继承性:它是指建立一个新的派生类,从一个先前定义的类中继承数据和函数,而且可以重新定义或加进数据和函数,从而建立类的层次或等级关系。

使用extends关键字实现多个类的单继承关系:
class Person{
var $name;
var $sex;
var $age;

function __construct($name="",$sex="man",$age=1){
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}

function say(){
echo "My name is :".$this->name.",sex:".$this->sex.",age:".$this->age."<br>";
}

function run(){
echo $this->name."is running";
}
}
//声明一个学生类,使用extends关键字扩展Person类
class Student extends Person {
var $school; //在学生类中声明一个所在学校的school的成员属性
//在学生类中声明一个学生可以学习的方法
function study(){
echo $this->name."正在".$this->school."学习<br>";
}
}
class Teacher extends Student{
var $wage;
function teaching(){
echo $this->name."正在".$this->school."教学,每月工资为:".$this->wage."<br>";
}
}
$teacher1 = new Teacher("Mr.zhang","man",40);

$teacher1->school = "edu";
$teacher1->wage = 3000;
$teacher1->say();
$teacher1->study();
$teacher1->teaching();
常见的关键字和魔术方法:
final关键字的应用:此类不能不被继承,可以加在类或类中的方法前。
static关键字的使用:使用static关键字可以将类中的成员表示为静态的,既可以用来标识成员属性,也可以用来标识成员方法。
单态设计模式:单态模式的主要作用是保证在面向对象编程设计中,一个类只能有一个实例对象存在。好处是可以节省内存,因为它限制了实例化对象的个数。
const关键字:const和static使用的方法比较相似,使用const关键字可以将类中的成员属性定义为常量,访问的方法和静态成员一样。都是通过类名或在成员方法中使用self关键字访问。
instanceof关键字:使用instanceof关键字可以确定一个对象是类的实例、类的子类,还是实现了某个特定接口。
克隆对象clone关键字:可以建立一个对象的副本,改变原来的对象时不会影响到副本。
类中通用的方法__toString():快速获取对象的字符串标识的最便捷的方式。
__call()方法的应用:调用对象中不存在的方法时就会自动调用该方法,并且程序也可以继续向下执行
对象的串行化:利用serialize()函数来串行化一个对象,把对象转换成二进制字符串。利用unserialize()函数来进行反串行化,就是把一个串行化过的值,返回原来的状态。