1 <?php
2
3
4 //面向过程
5 /*
6 $r=5;
7 $m=3.14*$r*$r;
8 */
9
10 //类和对象
11 //对象:任何东西都可以成为对象,类实例化出来的东西(相当于题)
12 //类:对所有同类的对象抽象出来的东西(有共同特征的)(相当于公式)
13
14 //info:Code,Name,Sex,Nation,Birthday
15 //对象:一条具体的信息 p001 张三 男 汉族 1990-2-3
16
17 //定义类
18
19 class Ren
20 {
21 const n=20;//将某些类里面常用到的东西定义为常量,方便使用
22 public static $class; //static 关键字定义静态成员
23 public $Name; //成员变量
24 protected $age;
25 private $height;
26 var $sex; //一般不要给成员变量赋值
27
28 function __construct($s) //构造函数,可以不写
29 {
30 $this->sex=$s;
31 }
32
33
34 function Run() //成员函数(方法)
35 {
36 echo "这个人正在奔跑!";
37 }
38 function Say()
39 {
40 echo self::$class; //普通方法里面可以调用静态成员
41 echo $this->Name."正在说话";
42 }
43
44 function GetSex()
45 {
46 return $this->sex;
47 }
48
49
50 function SetSex($s)
51 {
52 $this->sex =$s;
53 }
54
55 function __set($n,$v)
56 {
57 $this->$n =$v;
58 }
59
60 function __get($n)
61 {
62 return $this->$n;
63 }
64
65 static function test() //静态方法
66 {
67 echo self::$class; //调用自身类里面的静态成员
68 echo "静态方法";
69 }
70
71 }
72
73
74 //使用类
75 //1.实例化对象 $r是对象
76 //$r =new Ren("男");
77 //2.给成员变量赋值(调用成员变量)
78 //$r->Name ='张三'; // 给对象Name赋值
79 //3.调用成员方法
80 //$r->Say(); //执行成员方法
81
82 //var_dump($r);
83
84 //$this引用
85 //$this代表该对象(那个对象调用代表哪个对象),不是代表该类
86
87 //访问修饰符
88 //1.如果要加访问修饰符需要去掉
89 //2.三种:public 公有的 protected 受保护的 private 私有的
90 //3.如果不加访问修饰符 默认是public
91
92 //构造函数 function __construct(){} 两道下划线
93 //1.写法特殊
94 //2.执行特殊:在造对象的时候最先执行
95 //3.作用:对对象进行初始化操作
96
97
98
99 //三大特性
100 //封装:
101 //目的:为了让类更加安全,避免外界直接访问成员变量
102 //做法:1.把成员变量变为私有的
103 //2.通过方法(函数)来间接的操作成员变量
104
105 //继承
106 //如果要继承需要有子类出现
107 //概念:如果一个类有子类,那么该子类会继承父类的一切东西(私有的成员访问不到)
108 //在定义自累的时候需要加一个关键字:extends
109 //特点:单继承,一个类只能有一个父类
110 //如果父类中有构造函数,子类在实例化的时候要按照父类构造函数的标准来实例化
111 //子类对父类方法的重写:在子类中写一个同样的方法
112 //final:用来修饰类,代表该类是一个最终类,该类无法被继承
113
114
115
116 class Test extends Ren
117 {
118 public $birthday;
119
120 function Run()
121 {
122 echo "run";
123 }
124
125 function Say()
126 {
127 parent::Say(); //调用父类的Say()方法
128 echo "你好";
129 }
130 }
131 Ren::$class="0305";
132 $t= new test("女");
133 $t->Name="张三";
134 $t->Say();
135 echo ren::$class;//访问静态成员 类加双冒号
136 echo Ren::test();
137 $t->__set("height","10");
138 //静态成员
139 //类里面的普通成员是属于对象的,不是属于类的(调用的时候是用对象来调用的)
140 //什么叫做静态的:静态成员是属于类的,不是属于每个对象的
141 //定义静态成员用static关键字修饰
142 //静态方法里面无法调用普通成员
143 //静态方法可以调用静态成员,使用self关键字来调用
144 //self代表该类,$this 代表该对象
145
146
147
148
149
150 ?>