1 请谈谈面向对象的三大特征?

隐藏对象的属性和实现细节,仅对外公开接口,控制程序中属性的读取和修改的访问级别;

封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据和操作数据的源代码有机结合,形成 “类”,其中属性和函数都是类的成员。

封装的目的是:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。

子类继承父类的特征和行为,使得子类具有父类的属性和方法;

子类的创建可以增加新数据、新功能,可以继承父类的全部功能,但是不能选择性的继承父类的部分功能;

继承是类与类之间的关系,不是对象与对象之间的关系。

父类的引用指向子类对象;

指允许不同子类的对象对同一消息作出不同的响应,即同一消息可以根据发送对象的不同而采用不同的行为方式 (发送消息就是函数调用) 。

多态的实现机制:动态绑定,指程序在运行期间会判断所引用对象的实际类型,根据其实际类型调用对应的方法。

多态的作用:消除类型之间的耦合关系。

多态的三个必要条件:

1)有继承关系

2)子类重写父类方法

3)父类引用指向子类对象

多态的好处:

1)可替换性:多态对不同的子类对象都能正常调用相关方法;

2)可扩充性:多态对代码具有可扩充性,增加新的子类不影响已存在类的特性的运行和操作;

3)接口性:多态是父类向子类提供一个公共接口,由子类完善或覆盖它而实现的;

4)灵活性:应用中不同类型的子类通过重写公共方法,体现了灵活多样的操作;

5)简化性:多态简化了代码编写和修改的过程。

Original: https://www.cnblogs.com/xilichenbokeyuan/p/14139347.html
Author: 卫盾
Title: 1 请谈谈面向对象的三大特征?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576041/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 这个Python读取文件的方法,堪称天花板级别…

    序言 哈喽兄弟们,今天咱们来了解一下 fileinput 。 说到fileinput,可能90%的码农表示没用过,甚至没有听说过。 这不奇怪,因为在python界,既然open可以…

    数据库 2023年6月14日
    082
  • RoundRobin

    RoundRobin LoadBalanceRound-Robin既是轮询算法,是按照公约后的权重设置轮询比率,即权重轮询算法(Weighted Round-Robin) ,它是基…

    数据库 2023年6月11日
    094
  • 基于 ShardingSphere 的得物数据库中间件平台“彩虹桥”演进之路

    本文系转载于公众号得物技术 前言 随着得物 App 用户开始快速增长,业务线日趋丰富,也对底层数据库带来了较大的压力。各个业务线对于数据分片、读写分离、影子库路由等等的需求成为了刚…

    数据库 2023年6月16日
    0107
  • CentOS7安装配置Tomcat

    1.安装jdk jdk 安装有两种方式,本文只介绍rpm格式的安装包 安装jdk:在安装包所在的目录下执行如下语句 安装完成后,默认安装在/usr/java下。 配置环境变量,执行…

    数据库 2023年6月11日
    074
  • navicat~导出数据库密码

    当我们mysql密码忘记了,而在navicat里有记录,我们应该如何导出这个密码呢? 第一步:文件菜单,导出链接,导出连接获取到 connections.ncx 文件 这里需要勾选…

    数据库 2023年5月24日
    0181
  • 数据库设计的十个最佳实践

    数据库是应用及计算机的核心元素,负责存储运行软件应用所需的一切重要数据。为了保障应用正常运行,总有一个甚至多个数据库在默默运作。我们可以把数据库视为信息仓库,以结构化的方式存储了大…

    数据库 2023年5月24日
    0109
  • Mysql性能调优-工具篇

    首先祭出官方文档(这是5.7的,请自行选择版本): 如果你不想读英语,只需阅读这篇文章: [En] If you don’t want to read English,…

    数据库 2023年5月24日
    085
  • Java根据Freemarker模板生成Word文件

    准备模板 模板 + 数据 = 模型 1、将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2、将.xml文件重命名为.f…

    数据库 2023年6月14日
    0101
  • 如何制作验证码

    推导步骤1:在img标签的src属性里放上验证码的请求路径 补充1.img的src属&amp…

    数据库 2023年6月14日
    091
  • MySQL 的日志:binlog

    前言:binlog 用于记录数据库执行 写入性操作的日志信息,以二进制的形式保留在磁盘中。它是由 Server 层进行记录的,使用任何存储引擎都会产生 binlog。 实验准备 我…

    数据库 2023年5月24日
    088
  • 设计模式之(1)——简单工厂模式

    创建型模式:主要用于对象的创建; 结构型模式:用于处理类或者对象的组合; 行为型模式:用于描述类或对象怎样交互和分配职责; ————————————————————————————…

    数据库 2023年6月14日
    0102
  • Java Script 循环,数组,对象,判断,阶乘,查找-综合运用合集

    输出100个hello world. for (var i = 1; i console.log("hello world");} 创建一个包含1~100的数组…

    数据库 2023年6月11日
    093
  • JAVA编程练习01作业

    2 、 输入一个圆半径(r),计算并输出圆的面积和周长。 3 、输入一个三位正整数n,输出其个位、十位和百位上的数字。 4 、根据性别和体重计算输血量。女性体重不超过50kg的输血…

    数据库 2023年6月11日
    0157
  • Python学习笔记(十一)– Django API RESTful

    (1)路由;(2)视图类(提供给用户访问相当于原来的视图函数);(3)序列化类(提供给视图类使用,把对象序列化成Json) 注意:使用rest_framework,需先 setti…

    数据库 2023年6月16日
    084
  • B树-删除

    B树系列文章 1. B树-介绍 2. B树-查找 3. B树-插入 4. B树-删除 删除 根据B树的以下两个特性 每一个非叶子结点(除根结点)最少有 ⌈ m/2⌉ 个子结点 有k…

    数据库 2023年6月14日
    078
  • tiler–python实现的有趣的自定义马赛克图像拼接工具

    最近在github中发现了一个有趣的小工具,tiler github链接https://github.com/nuno-faria/tiler 具体介绍请直接去github,这里只…

    数据库 2023年6月11日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球