面向对象基础
1、两个圆,求两个圆相叠的阴影面积
//面向过程方式
$r1 = 10; //定义变量 $r2 = 5; $mianji = 3.14*$r1*$r1-3.14*$r2*$r2; //圆的公式 echo $mianji;
//面向对象
(1).将圆抽象为一个类
class Yuan { //类的成员 var $banjing; //圆类的一个成员变量 //面积,圆类的一个成员方法 function MianJi() { return 3.14*$this->banjing*$this->banjing; //$this关键字 在类里面代表该对象 } }
(2).实例化对象
$yuan = new Yuan(); $yuan->banjing = 10; //调成员-> $yuan->MianJi(); //调用方法
回到题中:
//造大圆 $maxyuan = new Yuan(); $maxyuan->banjing = 10; //调用成员 //造小圆 $minyuan = new Yuan(); $minyuan->banjing = 5; //调用成员 echo $maxyuan->MianJi()-$minyuan->MianJi(); //调用方法
计算长方形的面积
class Fang { var $chang; //成员变量 var $kuan; //成员变量 function Mian() { return $this->chang*$this->kuan; //this关键字 } }
//造长方形 $changfang = new Fang();
//调用成员 $changfang->chang = 4; $changfang->kuan = 6;
//调用方法 echo $changfang->Mian();
2、两个数之间的运算
(抽象为一个类)
class YunSuan { public $a; //类的成员变量 public $b;
//类的成员方法 function jia() { return $this->a+$this->b; } function jian() { return $this->a-$this->b; } function chen() { return $this->a*$this->b; } function chu() { return $this->a/$this->b; } }
(实例化对象)
$y = new YunSuan(); $y->a = 10; //调用成员 $y->b = 5; //调用成员 echo $y->jian(); //调用方法 echo $y->jia(); //调用方法 echo $y->chen(); //调用方法 echo $y->chu(); //调用方法
3、访问修饰符
(1)public (默认)公有的,任何地方都可以访问
(2)protected 受保护的,只能在该类或是该类中的子类中访问
(3)private 私有的,只能在该类中访问
4、构造函数(构造方法,就是类名):专门用来造对象的
上面的题进行构造函数,如下:
第一种:可以在类中加一个构造函数,然后实例化时在函数中赋值就可以
a.构造函数:在造对象时就执行了 function __construct($a1,$b1) //__双下划线开头的方法在面向对象中称为魔术方法 { $this->a = $a1;
$this->b = $b1; }
第二种:直接在类中赋值
b.可以直接修改默认值也可以 public $a=10; public $b=5;
1.写法特殊:方法名特殊
2.执行时间特殊:在造对象时就执行了构造方法