传统的面向过程


将要完成的工作,分作若干个步骤,或再细分为子步骤,然后后步骤从前往后一步一步完成,最初达致目标。

现代的面向对象


将要完成的工作拆分为“一个一个对象”的任务(功能),每个对象独自完成自己的任务,任务之间的链接通过“调用”来实现,最终也完成了整体的工作。

万事万物都是对象。

面向对象是设计思想的“升华”——面向过程是解决简单问题的自然的思维过程,面向对象是解决大规模的复杂问题的良好思想。

面向对象基本概念

面向对象三大特性:封装  继承inherit  多态

类与对象

抽象与具体

张三是一个对象,李四也是一个对象。王五同样是一个对象。。。。。

他们都隶属于“人”这个“类”(人类),同时我们也可以 说隶属于“脊椎动物类”,还可以说属于动物类,甚至生物。

类:是用于描述“某一些具有共同特征”的物体的概念,是某一类物体的总称。

通常,一个类所具有的共同特征包括2大方面的信息:

外观,形状,描述,数据。。。。。属性

行为,动作,功能。。。。。。。。方法。

对象:是指一个具体的“物体”,该物体隶属于某个“类别”(类)。

通常,对象离不开类,没有类,就不能有对象。

一个类的内部可以有3种代码:

属性

方法

类常量

它们统称为“类中成员”。

下面我们简单封装一个类,并实例化对象

  1. class person{
  2. /*定义属性*/
  3. var $name="";//var是修饰符,也可以用别的修饰
  4. /*方法*/
  5. function say($name){
  6. echo("我叫".$name);
  7. }
  8.  
  9. }
  10. $p = new person();//实例化对象
  11. $p->name="张三";//给对象属性赋值
  12. $p->say("张三");//调用对象的方法*

$this是一个“伪对象”,代表当前所属类的当前对象。

  1. /*定义一个人 类 有年龄 姓名属性 工作的方法*/
  2. //class man{
  3. // public $name;
  4. // public $sex;
  5. // public $age;
  6. // function summary(){
  7. // echo '我是'.$this->name.',是个'.$this->sex.'生'.',今年'.$this->age.'岁.<br>';
  8. // //$this指的是当前类的当前对象
  9. // }
  10. //}
  11. //
  12. //$p1 = new man();//实例化对象
  13. //$p1->name="夏荷";//给对象属性赋值
  14. //$p1->sex="女";//给对象属性赋值
  15. //$p1->age="23";//给对象属性赋值
  16. //$p1->summary();//调用对象的方法*/
  17. //
  18. //$p2 = new man();//实例化对象
  19. //$p2->name="万树";//给对象属性赋值
  20. //$p2->sex="男";//给对象属性赋值
  21. //$p2->age="25";//给对象属性赋值
  22. //$p2->summary();//调用对象的方法*/

静态属性 静态方法

  1. //静态属性 与 静态方法
  2. //class union{
  3. // static $v=10;
  4. // var $v1=100;
  5. //
  6. // static function f1(){
  7. // echo "这是静态方法";
  8. // }
  9. //}
  10. //
  11. //$p =new union();
  12. //$p->v1;//一般属性的调用
  13. //
  14. //echo union::$v;//静态属性的调用 类名::静态属性名
  15. //union::f1();//静态方法的调用 类名::静态方法名

注意:$this在静态方法中不能使用 ,静态方法中也不应调用非静态方法。

构造方法

构造方式是类中的一个“特殊”方法,其作用是在实例化一个对象的同时,给该对象的属性赋值,使之一创建完成,就具有了其本身的特有数据(属性值)。

1,该方法名字是固定的,为:__construct();

2,该方法必须是普通方法(不能是静态方法)

3,通常该方法应该是public

4,通常该方法中使用$this这个关键字来对属性进行赋值

5,当new 类名()的时候,其实是在调用该构造方法

6,如果一个类中定义了构造方法,则实例化该类时就会调用该方法,且实例化时的参数需要跟构造方法的参数匹配

  1. //构造方法 _construct
  2. //普通的我们这样
  3. //class lemon{
  4. // var $name="";
  5. // var $age=0;
  6. // function info(){
  7. // echo $this->name.'的年龄是'.$this->age;//如果对象太多 这样组织起来的话会很麻烦
  8. // }
  9. //
  10. //}
  11. //$lisi=new lemon();
  12. //$lisi->name='李四';
  13. //$lisi->age=12;
  14. //$lisi->info();
  15.  
  16. //特殊的(运用构造方法)是这样
  17. //class lemon{
  18. // var $name="";
  19. // var $age=0;
  20. // function __construct($name,$age){//构造方法 实例化对象的时候会自动调用 作用是初始化数据
  21. //$this->name=$name;
  22. //$this->age=$age;
  23. //}
  24. // function info(){
  25. //echo $this->name.'的年龄是'.$this->age;
  26. //}
  27. //
  28. //}
  29. //$hong=new lemon("王小红","25");
  30. //$hong->info();

类的继承

简单理解:

某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息。

父类有的特性子类一定会有,子类有的特性父类不一定有

  1. class shop_all{
  2. // var $lemon=10;
  3. // function show(){
  4. // echo $this->lemon;
  5. // }
  6. //}
  7. //class shop1 extends shop_all{//该句 shoop1 继承了 shop_all的属性
  8. // var $lemon ="66";//如果注释掉就会找到父类的该属性输出10
  9. // function show(){//如果注释掉就会找到父类的该属性输出10
  10. // echo "这是show的方法";
  11. // }
  12. //}
  13. //$fruit =new shop1();
  14. //echo $fruit->lemon;
  15. //echo $fruit->show();

浅谈PHP面向对象编程(一、简介)的更多相关文章

  1. 浅谈python面向对象编程和面向过程编程的区别

    面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候再一个个的依次调用即可. 优点:性能高 缺点:相较于面向对象而言,不易维护,不易复用,不易扩展 适合于小型的项目面向对象 ...

  2. 浅谈PHP面向对象编程(二、基础知识)

    和一些面向对象的语言有所不同,PHP并不是一种纯面向对象的语言,包PIP它支持面向对象的程序设计,并可以用于开发大型的商业程序.因此学好面向对象输程对PHP程序员来说也是至关重要的.本章并针对面向对象 ...

  3. 浅谈PHP面向对象编程(九、设计模式)

    9.0 设计模式 在编写程序时经常会遇到一此典型的问题或需要完成某种特定需求,设计模式就是针对这些问题和需求,在大量的实践中总结和理论化之后优选的代码结构编程风格,以及解决问题的思考方式. 设计模式就 ...

  4. 浅谈PHP面向对象编程(八、多态)

    8.0  多态 在设计一个成员方法时,通常希望该方法具备一定的通用性.例如要实现一个动物叫的方法,由于每个动物的叫声是不同的,因此可以在方法中接收-个动物类型的参数的对象当传人猫类对象时就发出猫类的叫 ...

  5. 浅谈PHP面向对象编程(七、抽象类与接口)

    7.0 抽象类与接口 当定义一个类时,常常需要定义一些方法来描述该类的行为特征.但有时这些方法的实现方式是无法确定的,此时就可以使用抽象类和接口. 抽象类和接口用于提高程序的灵活性.抽象类是一种特殊的 ...

  6. 浅谈PHP面向对象编程(六、自动加载及魔术方法)

    6.0 自动加载及魔术方法  6.1 自动加载 在PHP开发过程中,如果希望从外部引入一个class.通常会使用incluae和requre方法把定义这个class的文件包含进来.但是,在大型的开发项 ...

  7. 浅谈PHP面向对象编程(五、继承)

    5.0 继承 5.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使许多事物之间形成一种关系体系 . 例如猫和狗都属于动物,程序中 ...

  8. 浅谈PHP面向对象编程(四、类常量和静态成员)

    4.0 类常量和静态成员 通过上几篇博客我们了解到,类在实例化对象时,该对象中的成员只被当前对象所有.如果希望在类中定义的成员被所有实例共享. 此时可以使用类常量或静态成员来实现,接下来将针对类常量和 ...

  9. 浅谈PHP面向对象编程(三、构造方法和析构方法)

    3.0 构造方法和析构方法 从我之前的博客可以发现,实例化一个类的对象后,如果要为这个对象的属性赋值,需要直接访问该对象的属性.如果想要在实例化对象的同时就为这个对象的属性进行赋值,则可以通过构造方法 ...

随机推荐

  1. HM编码器代码阅读(1)——介绍以及相关知识

    HM是HEVC(H.265)的开源实现,可以从网上直接下载.HEVC(H.265)是新一代的视频编解码标准.本人目前研究的只是编码器部分,而且还是入门阶段!为了提高自己,边学边记,由于理解不够深入,难 ...

  2. 《Drools7.0.0.Final规则引擎教程》第4章 注释&错误信息

    注释 像Java开发语言一样,Drools文件中也可以添加注释.注释部分Drools引擎是会将其忽略调的.单行注释使用"//",示例如下: rule "Testing C ...

  3. Gradle2.0用户指南翻译——第一章. 介绍

    翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2 ...

  4. Xcode 在读写上提速100倍

  5. SoftmaxWithLoss函数和师兄给的loss有哪些区别呢

    师兄的: NG教程中提到的:

  6. UDP示例

    android学习笔记18--------------UDP示例 分类: android2011-11-10 10:07 848人阅读 评论(0) 收藏 举报 androidbufferexcepti ...

  7. for循环使用append问题

    append添加到元素的时候,已存在的元素是移动而不是复制,使用了遍历,所以第一次是新增,后面都是移动前面新增的,最后当然就出现了只有最后一项有东西.解决办法:1.不要遍历,使用jQuery的类选择器 ...

  8. 关于ehcache缓存的使用(简单对比redis)

    前言 最近在做一个项目,某个接口查询数据到返回数据总计需要7000+毫秒,一直在考虑优化的问题,优化也有原来的一家一家查询到一次查询所有的,在查询不同天数.结果是1500+,虽然优化了不少,但是数据结 ...

  9. 【mysql】VS2017 EF使用 mysql

    要在vs2017中能打开mysql的连接,需要安装以下扩展 mysql-connector-net-6.9.9+.msi [这里注意不要下载最新8.x.y版本,有坑]mysql-for-visuals ...

  10. POJ3045 Cow Acrobats

    题意 Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away and join t ...