php面向对象编程(一)

类与对象关系:

类就像一个人类的群体 我们从类中实例化一个对象 就像是制定一个人。

面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类, 做出来一个类很容易。

类的格式

class 类名 { }

类可以理解为一个人的群体,如果我们要把这个人介绍给别人 那么

首先, 你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。

然后,你要介绍这个人能做什么, 可以开车, 会说英语, 可以使用电脑等等。

从定义的角度可以分为:

1.静态的描述 如:人的姓名、性别、年龄、身高、体重、电话、家庭住址等等 我们将静态的描述称为成员属性

    我们可以用var 来定义 如 var $description ;此时我们应该注意的是声明没有必要赋值 ,如人的名字叫小明 有可能在这个人群中找到几十个小明

2.动态描述  如:这个人可以开车, 会说英语, 可以使用电脑等等   我们将动态的描述称为成员方法

class 人
{
	成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址
	成员方法:可以开车, 会说英语, 可以使用电脑
}

<?php
class Person
{
    // 下面是人的成员属性
    var $name;    //人的名子
    var $sex;    //人的性别
    var $age;    //人的年龄

    // 下面是人的成员方法
    function say() // 这个人可以说话的方法
    {
        echo "这个人在说话";
    } 

    function run() // 这个人可以走路的方法
    {
        echo "这个人在走路";
    }
}
?>

当定义好一个类后 我们需要实例化那个类才能使用

用new的关键词  $对象名称 = new  类名称();


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<?php

class Person

{

    //下面是人的成员属性

    var $name//人的名子

    var $sex//人的性别

    var $age//人的年龄

    //下面是人的成员方法

    function say() { //这个人可以说话的方法

        echo "这个人在说话";

    }

    function run() { //这个人可以走路的方法

        echo "这个人在走路";

    }

}

$p1=new Person();

$p2=new Person();

$p3=new Person();

?>

  现在我们示例化类已经好了我们就要去学会如何使用类中的成员

对象->属性 $p1->name; $p2->age; $p3->sex;

对象->方法 $p1->say(); $p2->run()


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

<?php

class Person

{

    // 下面是人的成员属性

    var $name;      // 人的名子

    var $sex;       // 人的性别

    var $age;       // 人的年龄

    // 下面是人的成员方法

    function say() // 这个人可以说话的方法

    {

        echo "这个人在说话";

    }

    function run() // 这个人可以走路的方法

    {

        echo "这个人在走路";

    }

}

$p1 new Person(); //创建实例对象$p1

$p2 new Person(); //创建实例对象$p2

$p3 new Person(); //创建实例对象$p3

// 下面三行是给$p1对象属性赋值

$p1->name = "张三";

$p1->sex = "男";

$p1->age = 20;

// 下面三行是访问$p1对象的属性

echo "p1对象的名子是:" $p1->name;

echo "p1对象的性别是:" $p1->sex;

echo "p1对象的年龄是:" $p1->age;

// 下面两行访问$p1对象中的方法

$p1->say();

$p1->run();

// 下面三行是给$p2对象属性赋值

$p2->name = "李四";

$p2->sex = "女";

$p2->age = 30;

// 下面三行是访问$p2对象的属性

echo "p2对象的名子是:" $p2->name;

echo "p2对象的性别是:" $p2->sex;

echo "p2对象的年龄是:" $p2->age;

// 下面两行访问$p2对象中的方法

$p2->say();

$p2->run();

// 下面三行是给$p3对象属性赋值

$p3->name="王五";

$p3->sex="男";

$p3->age=40;

// 下面三行是访问$p3对象的属性

echo "p3对象的名子是:" $p3->name;

echo "p3对象的性别是:" $p3->sex;

echo "p3对象的年龄是:" $p3->age;

// 下面两行访问$p3对象中的方法

$p3->say();

$p3->run();

?>

  此时类我们已经基本可以使用了 但是我们发现还是有点不足 就是我们可以在外部进行访问,但是不能在内部进行访问 我们引进一个概念“this”的用法   如果可以对内部进行访问赋值 那么将减少我们的代码量

  


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

<?php

class Person

{

    // 下面是人的成员属性

    var $name//人的名子

    var $sex//人的性别

    var $age//人的年龄

    // 下面是人的成员方法

    function say() // 这个人可以说话的方法

    {

        echo "我的名子叫:" $this->name . " 性别:" $this->sex . " 我的年龄是:" $this->age;

    }

    function run() // 这个人可以走路的方法

    {

        echo "这个人在走路";

    }

}

$p1 new Person(); // 创建实例对象$p1

$p2 new Person(); // 创建实例对象$p2

$p3 new Person(); // 创建实例对象$p3

// 下面三行是给$p1对象属性赋值

$p1->name = "张三";

$p1->sex = "男";

$p1->age = 20;

// 下面访问$p1对象中的说话方法

$p1->say();

// 下面三行是给$p2对象属性赋值

$p2->name = "李四";

$p2->sex = "女";

$p2->age = 30;

// 下面访问$p2对象中的说话方法

$p2->say();

// 下面三行是给$p3对象属性赋值

$p3->name = "王五";

$p3->sex = "男";

$p3->age = 40;

// 下面访问$p3对象中的说话方法

$p3->say();

?>

  分析一下


1

2

3

4

function say() // 这个人可以说话的方法

{

    echo "我的名子叫:" $this->name . " 性别:" $this->sex . " 我的年龄是:" $this->age;

}

  上面代码中$this指的是对其进行赋值的对象。

构造方法__construct()与析构方法__destruct()

构造方法__construct():即自动使用new的方法实现对象的实例化(可以理解为为实现能在实例化对象的时候传入参数构建一道桥梁)。理解为一个队列

  


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

<?

// 创建一个人类

class Person

{

    // 下面是人的成员属性

    var $name;  // 人的名子

    var $sex;   // 人的性别

    var $age;   // 人的年龄

    // 定义一个构造方法参数为姓名$name、性别$sex和年龄$age

    function __construct($name$sex$age)

    {

        // 通过构造方法传进来的$name给成员属性$this->name赋初使值

        $this->name = $name;

        // 通过构造方法传进来的$sex给成员属性$this->sex赋初使值

        $this->sex = $sex;

        // 通过构造方法传进来的$age给成员属性$this->age赋初使值

        $this->age = $age;

    }

    // 这个人的说话方法

    function say()

    {

        echo "我的名子叫:" $this->name . " 性别:" $this->sex . " 我的年龄是:" $this->age;

    }

}

// 通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄

$p1 new Person("张三","男", 20);

$p2 new Person("李四","女", 30);

$p3 new Person("王五","男", 40);

// 下面访问$p1对象中的说话方法

$p1->say();

// 下面访问$p2对象中的说话方法

$p2->say();

// 下面访问$p3对象中的说话方法

$p3->say();

?>

 

输出结果为:

我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40

 

析构方法__destruct():析构函数允许在销毁一个类之前进行一些列的操作   一个类的析构函数必须是__destruct()  注意的是析构函数不能附带任何的参数 理解为一个栈

  


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

<?

// 创建一个人类

class Person

{

    // 下面是人的成员属性

    var $name;  // 人的名子

    var $sex;   // 人的性别

    var $age;   // 人的年龄

    // 定义一个构造方法参数为姓名$name、性别$sex和年龄$age

    function __construct($name$sex$age)

    {

        // 通过构造方法传进来的$name给成员属性$this->name赋初使值

        $this->name = $name;

        

        // 通过构造方法传进来的$sex给成员属性$this->sex赋初使值

        $this->sex = $sex;

        

        // 通过构造方法传进来的$age给成员属性$this->age赋初使值

        $this->age = $age;

    }

    // 这个人的说话方法

    function say()

    {

        echo "我的名子叫:" $this->name . " 性别:" $this->sex . " 我的年龄是:" $this->age;

    }

    // 这是一个析构函数,在对象销毁前调用

    function __destruct()

    {

        echo "再见" $this->name;

    }

}

// 通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄

$p1 new Person("张三""男", 20);

$p2 new Person("李四""女", 30);

$p3 new Person("王五""男", 40);

// 下面访问$p1对象中的说话方法

$p1->say();

// 下面访问$p2对象中的说话方法

$p2->say();

// 下面访问$p3对象中的说话方法

$p3->say();

?>

  

输出结果为:

我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40
再见王五
再见李四
再见张三

时间: 2024-11-13 08:21:13

php面向对象编程(一)的相关文章

面向对象编程

面向对象:类,属性,方法 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的"对象",每个对象都拥有相同的方法,但各自的数据可能不同. 仍以Student类为例,在Python中,定义类是通过class关键字: class Student(object): pass class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下

python面向对象编程

java和c#只支持面向对象编程,python即可支持面向对象也可以支持函数式编程. 面向对象两个重要的概念:  1.类 2.对象 函数式 def sendemail(email,msg):            函数 print("8888") 面向对象 class Myclass: def sendmail(self,email,msg):      函数定义在类中第一个参数必须是self print("8888")              函数在类中定义叫方

面向对象编程的一些理解

(1) 简单的说类是对象的模版. 首先我们可以来理解一下对象的概念,面向对象编程的程序实际就是多个对象的集合,我们可以把所有的事物都抽象成对象,在程序设计中可以看作:对象=属性+方法.属性就是对象的数据,而方法就是对象的行为. 下面来说类,就像我开头所说类是对象的模版,而对象是类的实例化.举个例子,饼干模子可以看作是类,而具体的饼干就是对象.再比如有一个类是表示人,然后可以通过人这个模版来实例化出张三.李四... 比如说一个类是描述人的特征,为什么实例化? p = People(); 这个人有很

Python之路【第五篇】:面向对象编程

面向对象编程思维导向图 http://naotu.baidu.com/file/03516c91377d6cad0ded041aa4ce4433?token=ccaba09527261666 密码: Tim 面向:过程.函数.对象 面向过程:根据业务逻辑从上到下写垒代码! 面向过程的编程弊:每次调用的时候都的重写,代码特别长,代码重用性没有,每次增加新功能所有的代码都的修改!那有什么办法解决上面出现的弊端呢?函数就出现了. 面向函数:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可!

C++ Primer 学习笔记_73_面向对象编程 --再谈文本查询示例

面向对象编程 --再谈文本查询示例 引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询. 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he

C++ Primer 学习笔记_74_面向对象编程 --再谈文本查询示例[续/习题]

面向对象编程 --再谈文本查询示例[续/习题] //P522 习题15.41 //1 in TextQuery.h #ifndef TEXTQUERY_H_INCLUDED #define TEXTQUERY_H_INCLUDED #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <set> #include <map&g

面向对象编程---图片轮播

今天复习了一下面向对象编程,下面是我的效果图 看着这个图片你会觉得这没有什么,那么上代码: html部分: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 ul,ol,li{padding:0;margin:0;li

《Java面向对象编程第二版》今年出版以来获得读者一致好评。

<Java面向对象编程第一版>自2016年出版以来,承蒙读者们的厚爱,至今已经重印了二十多次,成为国内Java领域里的经典Java技术宝典.在当当网上获得了1500多条好评: http://product.dangdang.com/9186890.html?point=comment_point 应广大读者的要求,为第一版进行了升级,第二版融合了最新的Java8的语言特性,它继续为Java开发人员们提供丰富全面的技术支持和帮助.在京东网上读者们对第二版的好评如潮,一致认为这是Java开发人员必

面向对象编程与面向过程编程的区别与联系

LinuxC编程的学习已经告一段落,这段开始学C++.C++是面向对象编程,C语言是面向过程编程.因此学习C++的第一件事就是要弄明白什么是面向过程编程,什么是面向对象编程. 之前学习的C语言是面向过程编程,回想一下C语言编程的过程.主函数,定义变量,调用函数然后实现.面向过程编程是一种非常具体,要面面俱到的的编程方式.而面向对象是以对象为单位来进行编程,比较像正常人的思维. 下面我们举个例子,比如开车.加速.减速.刹车. 用面向过程来说就是你要先有一个车,然后这四个分别是4件事,也就是说你要写

go语言学习(五)——面向对象编程

主要讲的是"类"和接口&和其他传统语言不一样的地方挺多的,断断续续看了好几天 下面是我的练习代码 // GoStudy0219 project main.go /* go语言学习--面向对象编程(1) go中类型的值语义和引用语义 结构体(类)的定义和初始化 */ package main import ( "fmt" ) func main() { //几种"类"的初始化 v1 := &character{"Tom&q