• 什么是面向对象?面向对象小总结


    什么是面向对象?

    面向对象一共有3个部分:面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)。而我们常说的是面向对象编程(OOP),其实是面向对象的一部分。而认识面向对象编程之前要先了解两个重要的概念就是类和对象。

    类与对象

    世间万物皆对象,世间的万物我们都可以看成是对象,因为他们都有各自的属性。比如:人有身高,体重,年龄,性别等等这些属性,也可以唱歌,跳舞,跑步等等行为。

    如果把人看成一个类的话,那么身高,体重,年龄,性别这些就是人这个类的属性,而唱歌,跳舞,跑步就是人这个类的行为。

    面向对象编程三大特点

    (1).封装性(public、protected、private)

    简单形象的解释就是,把功能放在一个盒子里,要用到这个功能的时候,打开盒子,取出就可以使用。

    公共定义public :不受限 在任何地方都可以访问
    保护定义protected :本类及子类的类内部进行访问(类外部无法访问 出了类的大花括号即为外部) $this->name
    私有定义private: 只被本类内部访问(类外部及子类内部都无访问权)

    (2).继承性(extends)

    子类自动继承一个或多个父类中的属性与方法,并可以重写或者添加新的属性或方法。

        1》【子类】可以通过$this 【访问父类的属性】
        2》【子类的对象】可以直接【调用父类的方法和属性】
        3》PHP的单继承特性:类不允许同时继承多个父类(extends后面只能跟一个父类名称)
        4》php中的extends后面只能跟一个类的类名,这就是php的单继承原则

    这个特性简化了类和对象的创建,提高了代码的可重用性。

    (3).多态性

    指的是一个类可以创建多个对象,获取不同的结果。

    面向对象的五大基本原则:单一职责原则;开放封闭原则;替换原则; 依赖原则; 接口分离原则。

    面向对象小总结

    1、$this是什么

    当前类实例化的对象

    2、访问对象中的成员

    对象->成员

    3、构造方法

    通常用来初始化对象的属性,不用把属性写死,不同的对象就有了不同的属性

    4、get、set的用法

    通常将属性设为protected,利用getXxx和setXxx方法来设置和获取属性的值,避免外部随意的更改,同时还可以对对象进行过滤

    5、类的封装

    public方法可以在类外访问,相当于提供给外部的接口

    private方法只能在类内(即类的大括号内),外部不能直接访问,只能通过其他public方法来调用,就像电脑的开关,按电源键就可以开机,你不用知道它背后一系列的运转

    protected,同private,不过可以在其他的类中继承

    6、类的继承与重写 (extends)

    继承的类可以访问父类的public和protected方法或属性,避免了代码的重写

    继承的类重写父类的方法只需取与父类同样的方法名,在里面写自己的代码即可

    7、抽象类(abstract)

    抽象类是用来继承的,不能直接实例化,抽象方法不用写方法体

    作用是硬性的规定子类需要实现的方法,不实现不能实例化

    8、接口(interface)

    继承使用implements

    保证代码的一致性

    9、命名空间与自动加载(namespace)

    避免重名冲突,避免每次使用类前require的操作

    申明类前有namespace 文件位置  

    namespace app/Admin;

    使用类前有use namespace/类名

    use app/Admin/User;

    10、静态变量和静态方法

    可以看作是全局性的方法

    不用实例化对象即可使用

    使用方法:类名::成员

    11、const变量

    const主要是用于一些硬性的规定数据和约定俗成的数据码上面,可在类外使用,只能在定义处修改,比如我们的http状态码

    定义:const ABC=12;

    使用:类名::ABC;

  • 相关阅读:
    Go语言中Path包用法
    golang读取文件
    golang 判断文件或文件夹是否存在
    一个好玩的 屏蔽别人审查元素F12 右键
    view Table组件报错 You may have an infinite update loop in watcher with expression "columns"
    边框渐变色
    eclipse采用export方式打war包,结果里面的文件不一致
    jqgrid和vue结合的问题
    关于socket通信bind()返回值错误:10049
    Mybatis in 查询的实现
  • 原文地址:https://www.cnblogs.com/lvyl/p/6973081.html
Copyright © 2020-2023  润新知