如何掌握面向对象编程的四大特性、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

相关文章

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4