PHP中类与对象的深刻思考

PHP通过class关键字加类名来定义一个类的格式如:

<?php

  class lei{

  //......

}

?>    //上述lei就是一个最简单的类

再来一个概念,类中的成员函数又称为什么呢?答:成员方法。成员方法就是在类中实现某个功能的函数,仅仅在这个类中实现~~

例如<?php

  class sport{

  function lanqiu()

  {

    //..........

  }

}

?>

上述类sport中定义的函数lanqiu()就是作用在类sport中的成员方法,你可以写一些函数实现的功能。

那什么是类的实例化?上述类已经定义了sport  
类的成员方法也已经添加,假设这个成员方法的功能已经实现,那我们该如何使用这个类呢,我认为使用这个类的方法就是类的实例化,你不实例化你定义个类干啥啊==

继续,实例化是通过关键字new来声明一个对象,然后使用如下格式:“对象名->成员方法”

看个实例,借鉴自(潘凯华.php从入门到精通)

<?php

  class SportObject

  {

    function
beatBasketball($name,$height,$avoirdupois,$age,$sex)

    {

      if($height>180 and
$avoirdupois<=100)

      {

        return
$name.",符合打篮球的要求!";

      }

      else

      {

         return
$name.",不符合打篮球的要求!";

      }

    }

  }

  $sport = new
SportObject();    //这里sport就是一个实例化后的对象

  echo
$sport->beatBasketball(‘明日‘,‘185‘,‘80‘,‘20周岁‘,‘男‘);  //调用成员方法

?>

结果为:明日,符合打篮球的要求!

那么什么是成员变量?就是类中的变量 定义类成员变量的格式   关键字
  成员变量名

访问成员变量和访问成员方法一样  
对象名—>成员变量

再来个实例

<?php
class
SportObject
{
public
$name; //定义成员变量
public $height;
public
$avoirdupois;
public
function bootFootBall($name,$height,$avoirdupois)  //定义成员方法
{
$this->name=$name;
   //$this->作用是调用本类中的成员变量或成员方法
$this->height=$height;  //这里注意,$this->后面的变量是没有$符号的
$this->avoirdupois=$avoirdupois;
if($this->height<185 and
$this->avoirdupois<85)    //这里$this->height也可写成$height
{
return
$this->name.",符合踢足球的要求";
}
else
{
return
$this->name.",不符合踢足球的要求";
}
}
}
$sport
= new SportObject();
echo
$sport->bootFootBall(‘明日‘,‘185‘,‘80‘);
?>

接下来,类常量,定义类常量的关键字 const    例如  const PI=3.14159;

再来个例子

<?php
class SportObject
{
const
BOOK_TYPE=‘计算机图书‘;    //声明常量,常量名前没有$符号
public $object_name;
function
setObjectName($name)
{
$this->object_name =
$name;
}
function getObjectName()
{
return
$this->object_name;
}
}


$c_book = new
SportObject();
$c_book -> setObjectName("PHP类");
echo
SportObject::BOOK_TYPE."->";  //类名和常量名之间的两个冒号称为作用域操作符

//使用这个操作符可以在不创建对象的情况下调用类的常量、变量和方法。
echo $c_book ->
getObjectName();

?>

当实例化一个对象后,经常要初始化这个对象,即对这个对象赋初始值,这时候可以采用构造方法,构造方法就是生成对象时自动执行的成员方法(它就是一个成员方法,类中的函数,只是最先运行罢了),作用就是初始化对象。

实例:

<?php

class SportObject //类名

{

public $name; //成员变量

public $height;

public $avoirdupois;

public $age;

public $sex;

public function __construct($name,$height,$avoirdupois,$age,$sex)
//构造函数

{

$this->name=$name; //为成员变量赋初值

$this->height=$height;

$this->avoirdupois=$avoirdupois;

$this->age=$age;

$this->sex=$sex;

}

public function boot() //成员方式

{

if($this->height<185 and $this->avoirdupois<85)

{

return $this->name.",符合踢足球的要求!";

}

else

{

return $this->name.",不符合踢足球的要求!";

}

}

}

$sport = new SportObject(‘明日‘,‘185‘,‘80‘,‘20‘,‘男‘); //一句话就初始化完了实例sport

echo $sport->boot();

?>

析构函数:与构造函数作用相反,是在最后才执行的成员方式。

实例:

<?php

class SportObject

{

public $name;

public $height;

public $avoirdupois;

public $age;

public $sex;

public function __construct($name,$height,$avoirdupois,$age,$sex)

{

$this->name=$name;

$this->height=$height;

$this->avoirdupois=$avoirdupois;

$this->age=$age;

$this->sex=$sex;

}

public function boot()

{

if($this->height<185 and $this->avoirdupois<85)

{

return $this->name.",符合踢足球的要求!";

}

else

{

return $this->name.",不符合踢足球的要求!";

}

}

function __destruct()

{

echo "<p><b>对象被销毁,调用了析构函数。</b></p>";

}

}

$sport = new SportObject(‘明日‘,‘185‘,‘80‘,‘20‘,‘男‘);

echo $sport->boot();

?>

最后输出:

明日,不符合踢足球的要求!

对象被销毁,调用了析构函数。

继承实例:

<?php
class SportObject
{
public $name;
public
$age;
public $avoirdupois;
public $sex;
public function
__contruct($name,$age,$avoirdupois,$sex)
{
$this->name=$name;
$this->age=$age;
$this->avoirdupois=$avoirdupois;
$this->sex=$sex;
}

function
show()
{
echo ‘这句话不会显示‘;
}
}

class BeatBasketBall
extends SportObject
{
public $height;
function
__construct($name,$height)
{
$this->name=$name;
$this->height=$height;
}

function
show()
{
if($this->height>185)
{
return
$this->name.",符合打篮球的要求!";
}
else
{
return
$this->name.",不符合打篮球的要求";
}
}
}

class WeightLifting
extends SportObject
{
function
show()
{
if($this->avoirdupois<85)
{
return
$this->name.",符合举重的要求";
}
else
{
return
$this->name.",不符合举重的要求";
}
}
}

$beatbasketball = new
BeatBasketBall("科丹",‘190‘);
$weightlifting = new
WeightLifting("明日",‘185‘,‘80‘,‘20‘,‘男‘);
echo
$beatbasketball->show()."<br>";
echo
$weightlifting->show()."<br>";
?>

PHP中类与对象的深刻思考,布布扣,bubuko.com

时间: 2024-08-04 05:29:37

PHP中类与对象的深刻思考的相关文章

Swift面向对象中类和对象的属性

Swift中类和对象的属性分为三种:储存属性,计算属性和类属性. import Foundation class Person { // 储存属性必须赋初值 var score1: Int = 20 var score2: Int = 50 // 延迟储存属性,需要时再去分配 lazy var dog: Dog = Dog() // 计算属性,不能赋初值,提供get和set方法, var sum: Int { get { return score1 + score2 } } // 类属性,只能是

c/c++栏目中类和对象-4的python实现

# -*- coding: utf-8 -*- """ Created on Wed Jun 04 01:21:31 2014 @author: Administrator """ class Analysis: def processExamResults(self): passes = 0 failures = 0 studentCounter = 1 while(studentCounter<=10): result = input(

Java中类,对象,方法的内存分配

Java中类,对象,方法的内存分配 以下针对引用数据类型: 在内存中,类是静态的概念,它存在于内存中的CodeSegment中. 当我们使用new关键字生成对象时,JVM根据类的代码,去堆内存中开辟一块控件,存放该对象,该对象拥有一些属性,拥有一些方法.但是同一个类的对象和对象之间并不是没有联系的,看下面的例子: 1 class Student{ 2 static String schoolName; 3 String name; 4 int age; 5 6 void speak(String

iOS中类和对象,还有nil,Nil,NULL的区别

一.类和对象 类与对象的概念: 1.类是对同一类事物的高度抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法) 2.对象是类的一个实例,是一个具体的事物 3.类其实就是一种数据类型,它的变量就是对象 4.类与类之间的关系--继承关系 eg:学生与小学生,小学生也是学生,所以学生是小学生的父类,小学生是学生的子类 OC与面向对象: 1.对象是oc程序的核心.“万事万物皆对象”是程序中的核心思想 2.类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所具有的成员变量及方法

Objective-C中类和对象的介绍

知识点 1.类的介绍 类是对象的类型,对象是类型的实例. 实例变量:用来区分同一类的不同对象,是描述对象用的.实例变量可以是各种类型:基本数据类型.指针.复合类型.其他类. 实例方法:用来操作一个类的对象的函数,实例方法是给外部的访问接口. 在OC中,使用#import包含头文件.防止头文件被重复包含. 2.类的声明 @interface className:parentClass<protocol,..> { //实例变量的声明 } method declarations //方法的声明 @

php中类和对象的操作

$p1 = new Person('michael');//向Person类的构造函数__construct中传名字 echo($p1->name);//获取对象p1的public实例属性name(注意没有$) $p1->speak();//调用对象p1的实例方法speak echo(Person::$sex);//获取类变量(static $sex) echo(Person::sex);//获取类中的常量(不是static const,没有static const.只有类变量没有类常量.)

IOS中类和对象de区别

类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. 类与对象是抽象与具体的关系. 类其实就是一种数据类型,它的变量就是对象. 类与类之间的关系——继承关系 A是B 如果这句话说的通,在设计程序的时候就可以看成是继承关系. 例如:学生与小学生 小学生也是学生,所以学生是小学生的父类,小学生是学生的子类. oc与面向对象 对象是oc程序的核心.“万事万物皆对象”是程序中的核心思想.

Python中类和对象在内存中是如何保存?

类以及类中的方法在内存中只有一份,而根据类创建的每一个对象都在内存中需要存一份,大致如下图: 如上图所示,根据类创建对象时,对象中除了封装 name 和 age 的值之外,还会保存一个类对象指针,该值指向当前对象的类. 当通过 obj1 执行 [方法一] 时,过程如下: 根据当前对象中的 类对象指针 找到类中的方法 将对象 obj1 当作参数传给 方法的第一个参数 self 

java中类与对象的加载顺序

首先了解一下Java虚拟机初始化的原理. JVM通过加装.连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用.类型的生命周期如下图所示: 装载和连接必须在初始化之前就要完成. 类初始化阶段,主要是为类变量赋予正确的初始值.这里的"正确"初始值指的是程序员希望这个类变量所具备的起始值.一个正确的初始值是通过类变量初始化语句或者静态初始化语句给出的.初始化一个类包含两个步骤: 1) 如果类存在直接超类的话,且直接超类还没有被初始化,就先初始化直接超类. 2) 如果类存