类是功能的菜单
17
------------------------------------------------------------class  MyPc{    
public $name;
var $price;
function vod(){
return "你啊就是太懒惰了;别只看不做。会让你丧失你应有的能力";
              }
}//定义了一个类MyPc $pc1= new MyPc();
$pc1->name;
对象也是一种数据;
-> 访问对象的内容。
访问方法、内容。class MyPc {
public $name;             //默认就是public的属性
function vod(){
echo"你的叫声太当了!!";
}
}
$pc1= new MyPc();
$pc1->key="php100";
$pc1->vod();
18
----------------------------------------------------------------
$this关键字的应用
只能在类的里面使用;在类外不能使用$this .
对象的初始化__construct()php4
中就是
class MyPc{
function MyPc(){ 初始化的类容。}
}php5class MyPc{
............
function__destruct(){
...............}}垃圾回收机制;就是析构函数。
当内部的操作都完成后才到 就是析构函数
他的析构的顺序是先进后出的规则。有栈的风范。
class MyPc{
public $name;
public $type;function interlnet(){
return $this->interlnet().",浏览资料;看你懂得!!!";                    }function vod(){
return"在播放电影";
              }function __destruct(){echo "<br>---------".$this->name."<br>";
                     }
         }
$pc1= new MyPc();
$pc2= new MyPc();echo $pc1->vod()."<br>";
19
--------------------------------------------------------
 把相关的属性和行为影藏起来,从而的到了保护和安全
public表示全局,类外能访问到它
protected表示受保护的,只有本类或子类中使用
private表示私有,只有本类中使用
class MyPc{private $name;protected $price;
private function power($name=""){
  return $this->name."你的电脑打开。";
                                     }function ok(){
     return $this->name."开机成功";          }}当封装了可
特殊的情况需要访问怎办?
set($Name, $Value)
__set(), 取得当前类的私有属性,可以重新的给值。
__get(),在打印的时候就可以取到私有的那些内容得到封装的类。通过方法把私有属性输出来。私有属性在特殊的访问下要加一些特别的符号一边安全。
20
------------------------------------------------------------
extends
php的集成规则
基类方法的重载和基类的方法访问。单一的继承; 与C++的不同。class1->class2->class3
以此的继承。class3拥有class1,class2所有的功能和属性,
避免方法和属性重名;防止和重载。
基类的重载和基类方法访问
<?php 
class Root {          //建立一个类Root
   function dayin(){  //成员函数          return "Toot print<br>";}
}class Son extends Root {  //类Son继承类Root 
function dayin1(){
          return $this->dayin()."Son print <br>";
          //return Root::dayin()."son print";  //重载父类的方法。 
            }}
$p = new Son();//初始化Son类
  echo $p->dayin();//调用$Son对象的成员函数
?>
21
------------------------------------------------------------
 抽象类的关键字:abstract抽象类和方法的声明一个抽象类至少有一个抽象方法;
 
当该类中只要有一个抽象的方法 那么这个类就是抽象类。
抽象的方法前面要abstract functio name() 没有花括号;不能实例化。
只用于继承 重载才能用。
abstract class cl1{
  abstract function fun1();//抽象的方法
  abstract function fun2();
  abstract function fun3();
}//定义了个抽象的类 不能实例化class cl2 extends cl1{   //用继承后就可以实例化;在重载的时候要把
                        //所以的基类的抽象方法完全重载到子类;才能实例化。
function fun1(){}
function fun2(){
}
function fun3(){}}
22
----------------------------------------------------------------------
fianl   // 锁的关键字;用他修饰的类是不能被继承;方法不能被重载
fianl class cl1{     //类是不能被继承}fianl function fun1(){// 锁的关键字方法不能被重载}
self    //用来访问类中的关键字,如:$this, 他要在类实例化后才能使用
        直接访问当前类中的内部类容。
static  //静态属性  未实例化就可使用
class slass1{
static $name;
static function fun1(){}}
类名称::静态成员
 静态用   self::静态成员
类内部访问静态成员。类名称::静态成员//类外访问静态成员公共应用  提高访问的效力 也可以修改;类的静态方法中都要是静态
不能在静态的方法中使用非静态
就不能用$this
const   //定义常量;不能改变;  只能在类中;常量用大写来表示;没有$;有$就是
        //变量。class
23
========================================================================接口的介绍和创建
  关键字:interface
 一种成员属性完全为抽象或常量的特殊抽象类
类中全部为抽象方法
抽象方法前不用abstract
接口有自己的关键字:interface与普通类的创建类似interface demo{  //成员是常量;不能为变量。
const NAME="名字";
function Fun1();//方法只能是抽象的方法;不能为简单的方法。
function Fun2();
}接口的引用和规范
  关键字:implements 可以引用多个接口。
继承 extends 单一性。   class mypc implements demo,demo2,demo3{
  还要重在才能实例化,
}抽象类引用接口
abstract class mypc implementsclass mypc extends root implement demo,demo2,demo4{}
先继承后接口;单继承多接口
一条线继承24
-------------------------------------------------------------------==
多态的介绍与优势
运算符 instanceof
多态的应用
instanceof
class A{}
class B{}
$thing=new A;
if($thing instanceof A){
echo 'A';
}
if($thing instanceof B){
echo'B';
}
多态的用途怎么用:
就是说要有规范
interface myusb{
function type();
function alert();}
class rip implements myusb{
function type(){
   echo "usb 2.0";
}
function alert(){
echo "正在检验U盘驱动器";
}}class mp3 implements myusb{
function type(){
echo "usb mp3";
}function alert(){
echo "正在检查mp3驱动";
}
}class mypc(){
 function pcusb($what){
  $what->type()."<br>";
  $what->alert()."<br>";
}}
$p= new mypc();
$zip= new zip();
$mp3= new mp3();$p->pcusb(mp3);25
---------------------------------------------------------------------
对象描述的配置
方法名 __tostring(class My{
function__tostring(){
echo "所有的内容";
}}对象的方法的异常处理
方法名__call($funname,$arr_value)
class My{
function__call($n,$v){
echo "错误的方法名".$n;echo "错误的参数".Print_r($v);
}}
克隆对象的应用
方法名 __clone()
关键字clone
class My{
 function __clone(){
echo "自动载入函数";  // 自动的构造函数,
}}
$a= new My()
$b= $a;     //没有完全的有两个对象,还是有操作对象$a$a = new My()$b = clone $a; 
自动载入对象的方法方法名 __autoload()function +__auatoload($class_n){
include($class_n.".php");
}
$p= new Mypc();
$d= new demo();
====================================================================
class my{
function __tostring(){
return "这是一个类";
}
function __call($n,$v){
echo "不存在的方法为:".$n;
echo "错误的值为:".$v;
}
function __destruct(){   echo "<br>消除一个对象";
}
function __clone(){
  $this->name="你的类";
}
}$p= new ny();
$b=clone $p;
echo $p->name."<br>";
echo $b->name;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
自动载入demo类 //dd.phptest类 //ss.phpfunction __autoload($name){
include("$name.php");
}
include("dd.php"); //new.php
include("ss.php");
 $d= new demo();
 $d->fun1();