abstraction相关内容

继承和抽象类之间的确切区别是什么?

我了解 OOP 概念的基础[继承、抽象、封装、多态] 我们在父子关系的情况下使用继承[子可以拥有父拥有的所有功能,也可以为自己添加更多功能] 并且我们使用抽象类(在java中)作为类中方法的部分默认实现,也可以通过简单的继承来实现. 看下面的例子,它使我的观点更清楚. 继承: 父类 public class Parent {//对于所有子类,此方法将保持不变.无需覆 ..
发布时间:2021-11-26 17:26:09 Java开发

什么是“数据抽象"?究竟是什么意思?

数据抽象指的是什么?请提供现实生活中的例子. 解决方案 抽象有两部分: 隐藏从某个角度来看无关紧要的细节 确定从某个角度来看很重要的细节,如果项目拥有这些细节,则将它们视为同一类. 例如,如果我正在设计一个处理库存的程序,我希望能够找出系统有多少某种类型的商品库存.从接口系统的角度来看,我不在乎我是从数据库、csv 文件、通过 SOAP 接口或穿孔卡从远程存储库获取这些信息. ..
发布时间:2021-11-26 17:26:00 C/C++开发

带有 NoSQL API 的 ORM 是多余的吗?

使用 MongoDB(我假设其他 NoSQL 数据库 API 值得他们的盐)查询数据库的方法比 SQL 简单得多.无需生成繁琐的 SQL 查询等.例如从 mongodb-csharp: 使用 MongoDB.Driver;Mongo db = new Mongo();db.connect();//通过默认端口连接到本地主机.文档查询 = new Document();查询["field1"] = ..
发布时间:2021-11-26 17:25:54 C#/.NET

抽象和多态有什么区别

我似乎不太了解两个OOP概念.你能解释一下什么是抽象和多态,最好是用真实的例子和代码? 谢谢. 解决方案 抽象 想象一个分数类: 类分数:整数分母整数分子 现在有两个对象: fraction(obj1): 分母=-1 分子=-1分数(obj2): 分母=1 分子=1 两个对象的值都是 1:(1/1) == (-1)/(-1).你不会期望他们的行为与外界有任何不同.这就是 ..
发布时间:2021-11-26 17:25:32 其他开发

抽象和概括有什么区别?

我理解抽象就是将一些更具体的东西变得更抽象.那个东西可能是一个数据结构或一个过程.例如: 数据抽象:矩形是正方形的抽象.它专注于正方形有两对对边这一事实,而忽略了正方形相邻边相等的事实. 过程抽象:高阶函数map是一个过程的抽象,它对值列表执行一些操作以产生一个全新的值列表.它专注于这样一个事实,即该过程循环遍历列表的每个项目以生成一个新列表,并忽略对列表的每个项目执行的实际操作. ..

什么是“抽象过度"?意思?

经常在 Scala 文献中,我遇到“抽象结束"这个词,但我不明白其意图.例如,Martin Odersky 写道 您可以将方法(或“函数")作为参数传递,或者您可以抽象它们.您可以将类型指定为参数,也可以抽象它们. 再举一个例子,在“弃用观察者模式"论文中, 我们的事件流是一流值的结果是我们可以抽象它们. 我读过一阶泛型“抽象于类型",而单子“抽象于类型构造函数".我们还在 ..
发布时间:2021-11-26 17:25:09 其他开发

抽象有什么用?

我正在努力理解抽象在 Java 中的整体使用. 我一直在研究此链接中的一个示例:https://javatutorial.net/java-抽象例子我理解它的实现,但我不明白为什么它甚至是必要的.如果他们只是要在 2 个子类中再次创建,为什么他们的一个 calculateSalary 方法是在 Employee 类中创建的? 解决方案 抽象的整体使用是解耦的.要使用 Employee ..
发布时间:2021-11-26 17:25:01 Java开发

处理继承时覆盖equals方法

我一直在阅读有关在处理子类时如何最好地覆盖 equals 方法的内容,在这里我找到了很多帖子.他们推荐了使用 instanceof 或 getClass() 来比较不同子类的对象来实现解决方案的不同方法. 然而,关于 Effective Java,我的理解是(我是新手,所以我很可能是错的!)Bloch 认为最终两者都可能有问题,“没有办法扩展可实例化的类,并且添加一个值组件,同时保留 equ ..
发布时间:2021-11-26 17:24:27 Java开发

包裹可见性

为什么使用包可见性(默认),除非类在 java 中应该是公共的 解决方案 正如 Rostislav Matl 所说,当你想要制作一些不构成包界面的一部分的东西时,它很有用. 举个例子,假设你有一个包,它提供了一个接口和至少一个服务的具体实现. 使用此服务的人会关心您提供的接口并使用您提供的具体类之一,但除此之外他们不会关心其他太多事情.我们的服务必须与数据库通信,并且需要能够将 ..
发布时间:2021-11-26 17:24:18 Java开发

JAVA - 抽象

我对 Java 中的抽象有点困惑. 我检查了很多页面,说明抽象是数据隐藏(隐藏实现). 我对抽象的理解是“部分实现".只需在抽象类/接口中定义您将需要的内容,然后扩展/实现它们并添加您自己的功能即可. 我不明白的是这是如何隐藏数据的?实现类/接口后,您将可以访问代码,并根据需要对其进行修改. 我已经检查了很多关于此的问题和文章,但仍然对此感到困惑. 感谢任何帮助.谢谢 ..
发布时间:2021-11-26 17:24:09 Java开发

.Net 和 C# 中的多态数字

.Net 中没有数字的多态性,即没有统一不同类型的数字类型(如 bool、byte、uint、int 等)的 INumeric 接口,这真是令人遗憾.在极端情况下,人们想要一个完整的抽象代数类型包. Joe Duffy 有一篇关于这个问题的文章: http://www.bluebytesoftware.com/blog/CommentView,guid,14b37ade-3110-45 ..
发布时间:2021-11-26 17:24:01 C#/.NET

python相当于java OutputStream?

是否有与 java 的 OutputStream 或 PrintWriter? 我希望能够有一个句柄来表示像 stdout/sterr 这样的流、文件或其他东西(管道或套接字或虚拟接收器)并抽象出它是什么类型的东西,所以我可以将输出发送给它. 我该怎么做? 解决方案 “抽象出它是什么类型"在 Python 中自动发生 - 这被称为“鸭子类型".只需将任何类文件对象传递给函数,并 ..
发布时间:2021-11-26 17:23:53 Python

C++中抽象类和纯抽象类有什么区别?

示例: 迭代器是纯粹的抽象:任何表现得像迭代器是一个迭代器. 什么意思? 解决方案 抽象类至少有一个纯虚函数.这是标准的 C++ 术语. 有些人使用术语纯抽象类来描述一个只有纯虚函数(换句话说,没有数据成员也没有具体函数)的类.这相当于 Java 接口. 现在回答您的实际问题: 迭代器是纯粹的抽象:任何行为类似于迭代器的都是迭代器. 这与抽象类(纯或其他 ..
发布时间:2021-11-26 17:23:42 C/C++开发

为什么是高阶程序?

因此,如果一种语言提供更高阶的过程,那么我可以拥有返回过程的过程.类似的东西: (define (Proc a b c)(lambda (x) ( #| 方法体在这里是 a b c 和 x |# ))) 要创建新程序,我会执行以下操作: (define ProcA (Proc a1 b1 c1)) ;将创建具有 1 个参数的 ProcA 通过定义采用 4 个而不是 3 个参数的 Proc ..

接口(接口/抽象类)不是抽象?

最近,我一直在阅读关于接口是抽象的错误观念的文章.一个这样的帖子是 http://blog.ploeh.dk/2010/12/02/InterfacesAreNotAbstractions.aspx 我有点困惑.如果我没有接口(接口/抽象类),那么我将如何注入我的依赖项并模拟它们? 此外,我听说有人谈论不要使用只有一个实现者的接口.喜欢这里的博客 - http://simpleprog ..
发布时间:2021-11-26 17:23:26 其他开发

干净的代码:对象应该有公共属性吗?

我正在阅读“清洁代码"一书,并且正在为一个概念而苦苦挣扎.在讨论对象和数据结构时,它声明如下: 对象将其数据隐藏在抽象之后,并公开对这些数据进行操作的函数. 数据结构公开了它们的数据并且没有任何有意义的功能. 所以,我从中得到的是我的对象上不应该有任何公共属性,我应该只有对属性执行操作的方法.如果我确实需要访问属性,它们应该在一个数据结构上,它可以从我对象的方法返回?使用这种方法,我 ..
发布时间:2021-11-26 17:23:05 C#/.NET

我应该扩展 ArrayList 以添加不为空的属性吗?

我想将一组对象添加到 arrayList 中,前提是特定属性不为空. 我正在考虑扩展 ArrayList 并在子类中实现检查. 另一种方法是在将属性放入 Arraylist 之前检查属性,但这意味着,如果我需要根据逻辑将对象添加到 arraylist,我将不得不将 if 检查分散到每个地方. 我想知道您对此的看法……再想一想是不是有点矫枉过正? 解决方案 装饰模式 ..
发布时间:2021-11-26 17:22:56 Java开发