面向对象
类是种类,对象是种类其中的一个,每个对象都互不影响
修饰词
public //公共的,在任何位置都可以使用 protected //受保护的,只能在当前类或有继承关系的类中使用 private //私有的,只能在所在类中使用
基本语法
class classname{ //classname是自定义类名 public $property;… //用public声明一个公共标识 然后给予一个变量 变量也可以赋值
public $v1;
public $2=2;
function functionname ( args ){ //类的方法里的成员函数 执行的代码
} … //类的方法(成员函数) }
生成对象
1、$对象名1 = new 类名(); //对象名就是变量名;
2、$name='classname';
$name1=new $name(); //可变类(名)
3、$对象名3 = new self; //self指代类本身,这行代码只能在类内部方法中使用
使用形式
$对象->属性名;
注意:属性名前面没有$符号
构造方法
跟javascript里的页面加载一样,只要进入这个类就会从上到下的执行
class p{ public $name; //名字属性 public $age; //年龄属性 function intro(){ //输出的方法 echo "<br />hi,大家好,我叫".$this->name; echo ",今年".$this->age."岁"; } function __construct($n,$a){ //构造方法 $this->name=$n; $this->age=$a; } } $p=new p('李四',22); $p->intro;
最后输出结果为:hi,大家好,我叫李四,今年22岁
注意:
子类中没有定义析构方法时,会自动调用父类的析构方法。
子类定义了自己的析构方法,则不会自动调用父类的析构方法,但可以手动调用:parent::__destruct()
类的继承
-
继承:一个类从另一个已有的类获得其特性,称为继承。
-
派生:从一个已有的类产生一个新的类,称为派生。
-
继承和派生,其实只是从不同的方向(角度)来表述,本质上就是一个事情。
-
父类/子类:已有类为父类,新建类为子类。父类也叫“基类”,子类也叫“派生类”
-
单继承:一个类只能从一个上级类继承其特性信息。PHP和大多数面向对象的语言都是单继承模式。C++是多继承。
-
扩展:在子类中再来定义自己的一些新的特有的特性信息(属性,方法和常量)。没有扩展,继承也就没有意义了
抽象类
在正常定义类的前面,加上关键字:abstract,那就构成抽象类
abstract class 类名{.....类的定义.....}
抽象类的使命是专门做“父类”:子类就继承了它的特性,这就是“规范作用”
就是专门做父类使用的
抽象方法
抽象方法是一个没有方法体(也不含大括号)的方法定义“头”而已。前面需要加上abstract
abstract function f1($x1, $y, $m) ; //注意,后面一定有分号。
其实跟抽象类一样,配合抽象类,来实现对下级类的“行为规范”。
即相当于要求下级类去完成该功能(动作),但自己是不做的。