zoukankan      html  css  js  c++  java
  • 简单了解面向对象

    一,简单说两句,不喜欢省略

    对学习面向对象的人的一点点建议,开始的时候老师说的很神奇,什么面向对象,封装,多态什么什么什么什么。。。我觉得这些完全是制造混乱状态。

    编程就是方法,然后就是方法直接的调用,方法会用到传值,把相似方法罗列起来,组装起来,就是对象了。就好比一群零件,可能电池也对你有帮助,可能螺丝钉也对你有帮助,这些散碎零件就是函数,然后组装成机器人就成了玩具,这个玩具就是对象了,其实和函数差不多。不知道我这么说对你有没有帮助,总之,一切都是让人们更加方便的。没有那么复杂。

    名字在栈里面,属性在堆里面,函数在内存里面。

    函数可以先调用,最后写这个函数也没有问题,因为函数是被提前加载到内存里面,等着你脚本执行的时候去调用他。

    函数在没有被执行的时候,已经被加载到内存了,代码段和静态数据段,类也是代码段

    换句话说方法的代码段不依赖new,或者调用生存。属性依赖对象生存;

    二,继续阅读阶段

    面向对象说起来很神奇,其实就是将函数做了组合封装。比如一个函数就像一个人可以单打独斗,而面向对象更像是一个军队,可以形成很大的战斗力。

    php中面向对象,我们在框架中常见的有继承,所谓继承就是有一个词extends,如果用了这个词,两个类之间就有了联系,下面的类可以使用上面类的方法。如果举例子的话,可能是支持吧,比如我们就像小孩子,如果我们完成一个任务完成不了,我们就可以求助老师,当然那个老师得认识我们,认识就是extends,这个时候我们就可以求助老师的能力。其中子类使用父类方法的时候如果不想被子类同名函数覆盖需要使用parents::子类方法();可能开始的时候不是很习惯面向对象,如果熟悉了,感觉还是蛮不错的。

    没有被NEW的时候想调用一个类里面的方法,就用一个类继承另一个类,然后用这个类::父类,这样就不用new这个类了,直接调用就可以了。

    几个方法,不经常用,写下来了:

    get_class();  //获取对象的类

    get_parent_class();  //获取对象的父类

    get_class_vars()  //获取对象的属性  这里用法是  var_dump(get_class_vars("类名"));

    get_object_vars()   //这里用法是  var_dump(get_class_vars($wyl));  //$wyl = new It();

    get_class_methods($wyl) //返回类的方法  -- 如果是子类会包含父类方法

    property_exists("person","eat");

    is_object("对象名");

    instanceof;  $对象 instanceof 对象 验证一个对象是否是从祖先实例化出来的

    魔术方法:

    什么是魔术方法,我们都知道方法需要调用,调用就相当于我站在门外,向屋子里面喊人,喊到谁了,谁就答应我一声,然后跑出来,帮我做事情。魔术方法就是我不用喊人,但是怎么会被触发呢,就是在做错事情的时候,比如我们做了一个防盗机制,有人做错事情了,就会触发这个线,然后自动报警,不被我们控制到。

    __tostring()   当我们new了一个对象,输出这个对象的时候,对象不能被直接输出,当我们输出的时候会报错,但是我们写了这个方法,那么不会被报错,执行__tostring()方法,当然这个方法不能写echo,应该是return返回一个参数

  • 相关阅读:
    第十九节 集群模式内各节点的通信和文件拷贝
    第十八节 虚拟机克隆后ip修改
    WAF 与 RASP 的安装使用大比拼!
    不改变中间层,如何玩转 .NET 的远程处理功能?
    什么是实时应用程序自我保护(RASP)?
    拒绝「技术栈」选择恐惧症
    为什么Nagios会那么吵?你又能做些什么呢?(1)
    Java 应用发布后,需要关注的7个性能指标
    玩转AWS CloudWatch微信告警
    日均百万 PV 的站点如何做性能监测?试试「3M口罩」!
  • 原文地址:https://www.cnblogs.com/xiaoxiaomengxiangjia/p/5331256.html
Copyright © 2011-2022 走看看