如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

本文主要是介绍如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里写目录标题

  • OOP语言的四大特性
  • lambda
  • 输入/输出流(I/O流)

OOP语言的四大特性

面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。

类-》实体的抽象类型
实体(属性,行为) -》 ADT(abstract data type)
属性-》成员变量
行为-》成员方法
类有三种访问限定符:public private protected

类的成员方法一经编译,所有的方法参数,都会加一个this指针

new =》malloc内存开辟 + 构造函数
delete ps; == 析构函数 +free(ps)

对象默认的拷贝构造是做内存的数据拷贝
关键是对象如果占用外部资源,那么浅拷贝就出现问题了。

  1. 封装(Encapsulation)
    封装是指将数据(属性)和操作数据的方法(行为)打包在一起,形成一个“类”。封装有助于将对象的内部状态保护起来,只允许通过定义好的接口进行访问。这种信息隐藏的特性不仅有助于防止外部代码直接修改对象的内部数据,还使得程序的维护和修改变得更加容易。
  • 封装的优势包括:

    控制访问权限:通过定义公共接口和私有数据,程序员可以控制哪些数据可以被外部访问,哪些数据是只对对象内部可见的。这种控制有助于避免不必要的副作用和错误。

    提高代码的可维护性:封装使得类的内部实现与外部使用分离,任何对内部实现的修改不会影响到外部使用者,只要接口保持不变。

    减少复杂性:封装可以将复杂的功能模块化,用户只需了解如何使用接口,而不需要了解内部的实现细节。

  1. 继承(Inheritance)
    继承是面向对象编程中的一种机制,它允许一个类(子类)继承另一个类(父类)的属性和方法。继承使得代码可以重用,同时也可以扩展和修改父类的功能。
  • 继承的优势包括:
    代码重用:通过继承,子类可以重用父类的代码,避免重复编写相同的功能。
    扩展性:子类可以在继承父类的基础上添加新的属性和方法,或者重写父类的方法,以实现更多的功能。
    层次结构:继承允许创建一个层次化的类结构,这使得系统的组织和分类变得更加清晰。
  1. 多态(Polymorphism)
    多态是指一个接口(方法)可以有多种实现方式。具体来说,子类可以重写父类的方法,提供不同的实现,从而使得同一操作在不同对象上表现出不同的行为。
  • 多态的优势包括:
    灵活性:多态允许在运行时决定调用哪个方法实现,这使得程序可以处理不同类型的对象,而无需了解它们的具体类型。
    扩展性:通过多态,可以方便地添加新的子类,而无需修改现有的代码。只需确保新子类遵循父类定义的接口即可。
    简化代码:使用多态可以简化代码的结构,因为它允许通过统一的接口处理不同类型的对象,从而减少了复杂的条件判断。
  1. 抽象(Abstraction)
    抽象是指从对象的具体实现中提取出公共的特性和行为,形成一个抽象的类或接口。抽象类和接口定义了子类应该实现哪些方法,但不提供具体的实现细节。
  • 抽象的优势包括:
    提高可维护性:抽象化使得系统的设计更具整体性,开发人员可以专注于设计公共接口,而不是具体的实现细节。
    增强灵活性:通过定义抽象类或接口,程序员可以在不同的子类中实现不同的功能,而不会影响到抽象类或接口的设计。
    促进模块化设计:抽象化帮助将系统拆分成更小、更可管理的模块,从而提高系统的整体结构性。

lambda

lambda表达式语法:
[捕获外部变量] (形参列表)->返回值{操作代码}

如果lambda表达式的返回值不需要,可以省略
[捕获外部变量]
[] :表示不捕获任何外部所有变量
[=] :以传值的方式捕获外部所有变量
[&] :以传引用的方式捕获外部变量
[this] :捕获外部的this指针
[=,&a] :以传值的方式捕获外部所以变量,但是a变量以传引用的方式捕获
[a,b] :以值传递的方式捕获外部变量a和b
[a,&b] :a以值传递的方式捕获,b以引用的方式捕获

输入/输出流(I/O流)

输入/输出流(I/O流)是计算机编程中用于处理输入和输出的抽象概念。它们提供了一种统一的方式来读取输入数据和将输出数据发送到不同的设备或文件。

I/O流以流的形式传输数据。流可以被看作是数据在程序和外部资源(如键盘、屏幕、文件等)之间的通道。数据可以从流中读取(输入)或写入到流中(输出),这样就实现了程序和外部资源之间的数据交换。

I/O流通常分为输入流和输出流两种类型:

输入流(Input Stream):用于从外部资源(如键盘、文件等)读取数据到程序中。程序可以逐个读取流中的数据,直到达到所需的数据或流结束。

输出流(Output Stream):用于将程序中的数据写入到外部资源(如屏幕、文件等)。程序可以将数据按照需要写入流中,然后流会将数据传输到指定的外部资源。
I/O流的基本概念:

输入流:用于读取数据。常见的输入流有从文件读取、从网络接收数据、从用户输入接收数据等。

输出流:用于写入数据。常见的输出流有向文件写入、向网络发送数据、向用户输出数据等。

流的分类:

字节流:处理基本的输入和输出操作,适用于所有类型的I/O操作。常见的字节流类有 InputStream 和 OutputStream。

java
InputStream inputStream = new FileInputStream("input.txt");
OutputStream outputStream = new FileOutputStream("output.txt");

字符流:处理字符数据,提供了对字符的编码和解码支持。常见的字符流类有 Reader 和 Writer。

java
Reader reader = new FileReader("input.txt");
Writer writer = new FileWriter("output.txt");

I/O流在不同的编程语言和操作系统中有不同的实现方式和API。例如,在C++中,常见的I/O流类包括 std::cin 和 std::cout 用于控制台输入和输出,以及 std::ifstream 和 std::ofstream 用于文件的输入和输出。而在Java中,常见的I/O流类包括 System.in 和 System.out 用于标准输入和输出,以及 FileInputStream 和 FileOutputStream 用于文件的输入和输出。

I/O流提供了一种通用的、抽象的方式来处理输入和输出,使得程序可以与不同的外部资源进行交互,并实现数据的读取和写入

这篇关于如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150085

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等