类和对象
类是对象的抽象化,对象是类的实例化
class ren
{
成员变量
var $shengao;
var $tizhong;
var $name;
var $sex;
成员属性---php语言没有
成员方法
function Eat()
{
echo "用手吃饭";
}
function zoulu()
{
echo "用脚、跑步、不行";
}
}
创建对象,必须有类
$wo=new ren();//调用类
$wo->name="张三";//赋值
echo $wo->name."<br>";//取值
例题:求两个半径不同的圆的所夹阴影部分的面积
解法一:面向过程
$R=10; $r=5; //大圆面积 $S=3.14*$R*$R; //小圆面积 $s=3.14*$r*$r; //阴影面积 $sss=$S-$s; echo $sss;
解法二:面向对象
class circle { var $r;//此半径属于circle这个类 function S() { $a=3.14*$this->r*$this->r;//$this->r 代表这个对象的半径 return $a;//只能返回值,不可以返回其他 } } //类实例化对象 $dayuan=new circle();//对象调用类,类里面有的才能调用 $dayuan->r=10; $dm=$dayuan->S(); $xiaoyuan =new circle(); $xiaoyuan->r=5; $xm=$xiaoyuan->S(); echo ($dm-$xm); //以后解题优先考虑面向对象,即本题涉及到两个“圆”(对象),只有一类“圆”,创建类circle。
练习:
/*class ren { var $name; var $sex; var $yuyan; function chifan() { echo "yong"; } function yudong() { echo "跑"; } } $r=new ren();//创建对象 //$r->name="哈哈";//赋值 //echo $r->name;//取值 var_dump($r);//检查输出 $r->chifan();//调用类的方法 $r->yudong();//调用类的方法 */
面向对象相比面向过程的优势:
面向过程就是一步一步的解决问题,具体、看重细节;
面向对象从大局分类、分层、分步解决问题,重点是类;
相对面向过程而言,面向对象写的代码可能更多,但建好类以后,解决问题的思路更清晰,易于维护(修改/扩展);