zoukankan      html  css  js  c++  java
  • 面向对象的三个基本特征

    面向对象的三个基本特征

    面向对象的三个基本特征:封装、继承、多态

    1.封装(Encapsulation)——隐藏实现

    封装最好理解,是面向对象的特征之一,是对象和类概念的主要特性。

    封装,也就是把客观事物封装成抽象类,并且类可以把自己的数据和方法只让可信任的类或者对象操作,对不可信的进行隐藏。

    简单的来说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码和数据是可以私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序外无关的部分意外的改变或错误的使用了对象的私有部分。

    2.继承(Inheritance)——接口的重用

    面向对象编程(OOP)语言的一个重要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重写原来的类的情况下对这些功能进行扩展。

    通过继承创建的新类称为“子类”或“派生类”。

    被继承的类称为“基类”、“父类”或者“超类”。

    继承的过程,就是从一般到特殊的过程。

    要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

    在某些OOP语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

    继承概念有三类:实现继承、接口继承、可视继承。

    1.实现继承是指使用基类的属性而无需额外编码能力。

    2.接口继承是指仅使用属性和方法的名称,但是子类必须提供实现的能力。

    3.可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

    在考虑使用继承的时候,有一点需要注意,那就是二个类的关系应该是“属于”关系。例如,Employee是一个人,Manager也是一个人,因此这二个类都可以继承Person类。但是Leg类不能继承Person类,因为腿不是一个人。

    抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字Interface而不是class。

    OO开发方式大致为:划分对象——》抽象类——》将类组织成为层次化结构(继承和合成)——》用类与实例进行设计和实现几个阶段。

    3.多态(Polymorphism)——对象的相互的魔法

    多态就是同一个行为具有多个不同的表现形式或形态的能力。

    态就是同一接口,使用不同的实例而执行不同的操作。

    多态性:简单来说就是允许子类类型指针赋值给父类类型的指针

    实现多态,有二种方式:覆盖、重载

    覆盖:子类重新定义父类的虚函数的做法。

    重载:允许存在多个同名函数,而这些函数的参数不同(或许参数个数不同,或许参数类型不同,或许二者都不同)

    优点:

    1.消除类型之间的耦合关系。

    2.可替换性

    3.可扩充性

    4.接口性

    5.灵活性

    6.简化性

    多态存在的三个必要条件

    1.继承

    2.重写

    3.父类引用子类对象

    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,就去调用子类的同名方法方法。

    多态好处:可以使用程序的良好的扩展,并可以对所以类的对象进行通用处理。(例如:猫叫一声老鼠跑了)https://www.cnblogs.com/mvpbest/p/13817983.html

  • 相关阅读:
    阿里DatatX mysql8往 Elasticsearch 7 插入时间数据 时区引发的问题
    通俗易懂 k8s (3):kubernetes 服务的注册与发现
    ReplicaSet 和 ReplicationController 的区别
    使用Go module导入本地包
    k8s之statefulset控制器
    终于成功部署 Kubernetes HPA 基于 QPS 进行自动伸缩
    Atitit drmmr outline org stat vb u33.docx Atitit drmmr outline org stat v0 taf.docx Atitit drmmr out
    Atitit all diary index va u33 #alldiary.docx Atitit alldiaryindex v1 t717 目录 1. Fix 1 2. Diary deta
    Atitit path query 路径查询语言 数据检索语言 目录 1.1. List map >> spel 1 1.2. Html数据 》》Css选择符 1 1.3. Json 》map》
    Atitit prgrmlan topic--express lan QL query lan表达式语言 目录 1. 通用表达语言(CEL) 1 1.1. 8.2 功能概述 1 1.2. Ongl
  • 原文地址:https://www.cnblogs.com/mvpbest/p/13877835.html
Copyright © 2011-2022 走看看