面向对象中的基本概念

类和对象

对象:  万物皆对象;

类: 任何对象,都可以人为“规定”为某种类型(类别);

class  Person{
var  $name ;
var  $age;
var  $edu;
}
我:
姓名:罗XX,
年龄40,
学历:大学;
王亮:
姓名:王亮
年龄:20;
学历:大学;
class  Teacher{
var  $name ;
var  $age;
var  $edu;
var  $major; //专业
}

举例:

//定义一个"人类"(Person类)
class Person{
	var $name;	//一个特征,其实就是"变量"
	var $age;	//一个特征,其实就是"变量"
	var $edu;	//一个特征,其实就是"变量"
}
//创建一个新的Person类的对象,并"放入"变量$obj1中(其实就是赋值)
$obj1 = new Person();
$obj1->name = '张三';	//符号"->"就是表示指代对象中的某个"特征",这里是给该特征赋值;
$obj1->age = 18;	//"->"相当于js中的"."符号,比如d1.style.color = "red";
$obj1->edu = '大学';
echo "<pre>";
var_dump($obj1);
echo "/pre";

显示结果为:

object(Person)#1 (3) {
  ["name"]=>
  string(6) "张三"
  ["age"]=>
  int(18)
  ["edu"]=>
  string(6) "大学"
}

又创建了一个对象:

//又创建了一个对象:
$obj2 = new Person();
$obj2->name = "李四";
$obj2->age = 22;
$obj2->edu = "高中";
echo "<pre>";
var_dump($obj2);
echo "</pre>";

然后再显示为:

object(Person)#1 (3) {
  ["name"]=>
  string(6) "张三"
  ["age"]=>
  int(18)
  ["edu"]=>
  string(6) "大学"
}
object(Person)#2 (3) {
  ["name"]=>
  string(6) "李四"
  ["age"]=>
  int(22)
  ["edu"]=>
  string(6) "高中"
}

可见:

类是描述一类事物的一个总称,是具有相同特征特性的该类事物的一个通用名字(称呼);

对象是一个明确的具体的”物体”,是某个类中的一个“实物”(相对来说,类就是一种抽象的泛称)。对象离不开类,或者说,对象一定隶属于某个类——有类才有对象,先有类再有对象。

属性和方法

原来的做法(面向过程):

<?php
$name = "小花";
$age = 18;
$edu = "大学";
function wash($n, $a, $e){
	echo "<br />{$a}岁的{$e}学历的{$n}在勤快地洗衣服";
}
function meal($n, $a, $e){
	echo "<br />{$a}岁的{$e}学历的{$n}在快乐地做饭";
}
wash($name, $age, $edu);
meal($name, $age, $edu);
?>

现在的做法(面向对象):

<?php
class MyDreamGirl{
	var $name = "小花";	//此时他叫做"属性"了(原来是变量的)
	var $age = 18;
	var $edu = "大学";

	//此时,他叫做"方法"了(原来是函数);
	function wash(){
		echo "<br />{$this->age}岁的{$this->edu}学历的{$this->name}在勤快地洗衣服";
	}
	function meal(){
		echo "<br />{$this->age}岁的{$this->edu}学历的{$this->name}在快乐地做饭";
	}
}
$obj1 = new MyDreamGirl();
$obj1->wash();
$obj1->meal();
?>

可见:

属性:就是原来的“变量”,只是现在它“隶属于”一个类了,即写在一个类中,就称为属性;

方法:就是原来的“函数”,只是现在它“隶属于”一个类了,即写在一个类中,就称为方法;

注意:属性和方法,已经不能“自由使用”了,而是都要通过这个类或这个类的对象去使用。

使用属性,就把它当做一个“变量”去使用就好了,只是需要该形式:对象->属性名;

使用方法,就把它当做一个“函数”去使用就好了,只是需要该形式:对象->函数名(实参列表…)

<?php
class MyDreamGirl{
	function GetPingfanghe($x, $y){
		$result = $x*$x + $y*$y;
		return $result;
	}
}
$obj2 = new MyDreamGirl();
$v1 = $obj2->GetPingfanghe(3,4);
echo "<br /><br />v1 = $v1";
?>

结果为:

v1 = 25