Language agnostic 程序设计中的抽象

Language agnostic 程序设计中的抽象,language-agnostic,terminology,Language Agnostic,Terminology,抽象一词指的是队列类或任何类。类是抽象的,对吗?抽象这个词是如何在编程中使用的。抽象的东西?这是什么意思?抽象在OO中用于表示类不能直接实例化,必须在实例化之前继承。很好地解释了这一点。抽象意味着你在讨论一个或多个层次上的想法,而不是你可以实际指向或创建的任何特定示例 就类而言,抽象类是抽象的,因为它不能被实例化。可以实例化的特定类是具体的,它可能是某个抽象类的示例 类似地,如果data structures类讨论“抽象”数据类型,如队列,则教师将队列表示为“FIFO数据结构”。略少的是Java

抽象一词指的是队列类或任何类。类是抽象的,对吗?抽象这个词是如何在编程中使用的。抽象的东西?这是什么意思?

抽象在OO中用于表示类不能直接实例化,必须在实例化之前继承。很好地解释了这一点。

抽象意味着你在讨论一个或多个层次上的想法,而不是你可以实际指向或创建的任何特定示例

就类而言,抽象类是抽象的,因为它不能被实例化。可以实例化的特定类是具体的,它可能是某个抽象类的示例

类似地,如果data structures类讨论“抽象”数据类型,如队列,则教师将队列表示为“FIFO数据结构”。略少的是Java的AbstractQueue。您可以指向的具体队列不是指针和内存,而是队列!可能是Java的LinkedBlockingQueue

`Abstract` ... ... ... ... ... ... ... ... ...   `Concrete`
 a queue            AbstractQueue                LinkedBlockingQueue
 a group            an infinite group            positive integers
 a car         a Ford       1995 Ford Taurus     My 1995 Ford Taurus VIN# 3489230148230

抽象类不能实例化,而是由其他类继承,通常是具体类。它们通常包含继承类所共有的代码,以尽量减少代码重复。

我认为这可能意味着与编程相关的一些事情。但是,对我来说,我认为它与虚拟方法有关,虚拟方法可能根据底层对象类型执行不同的任务。这将与总是执行相同的固定操作集的方法形成对比


事实上,存在抽象类,其中一个或多个方法是纯虚拟的,这意味着它们不是由该类实现的。这样的类不能被实例化。相反,您必须从中派生一个实现纯虚拟方法的新类,然后您可以实例化第二个类。

术语abstract可能意味着一大堆不同的东西,具体取决于上下文

抽象的两个最常见的用途与面向对象编程有关。如果一个方法没有实现,那么它被称为抽象方法,或者说是纯虚拟方法。抽象方法的目的是指示从给定类继承的类都将具有具有给定签名的方法,但该方法没有合理的默认行为。一个常见的例子是,在形状的类层次结构中,形状的基类可能有一个在屏幕上绘制形状的抽象方法。绘制形状没有良好的默认行为-它是什么形状?-但是任何一个单独的形状都有这个功能的具体实现

相关术语是一个抽象类,它是一个包含抽象方法的类。由于类包含此抽象方法,因此不能有该类类型的具体对象。否则,如果您尝试调用抽象方法,就会发现没有与之关联的实现

在完全不同的上下文中,单词abstract有时出现在术语abstract data type中,该术语用于描述支持某些数学运算集的对象,而不必解释这些运算是如何实现的。例如,堆栈、队列和列表都是抽象数据类型,因为它们描述了在不提供实现(例如动态数组)的情况下对给定类型对象的预期行为?链表?哈希表

抽象一词也出现在抽象中,它是将复杂系统简化为更易于管理的东西。例如,网络路由通常分为不同数量的层,每个层负责处理端到端通信的某些部分。每一层都有一个特定的任务,必须以预定的方式接收输入并生成输出。这使得程序员可以在一个层上工作,将所有其他层视为神奇地完成工作的黑匣子,因为只要您以正确的形式向层提供输入或以特定的方式读取某个层的输出,您就不必担心该层如何工作的细节


希望这有帮助

OO中的一个很好的例子是动物,你会有一个这样的抽象类:

abstract class Animal
{
     public AnimalType Type { get; set; }
}
现在不能直接声明动物,必须有一个继承自动物的类,如猫:

class Cat : Animal
{
       public Cat()
       {
             Type = AnimalType.Feline; 
       }
}
所以这是行不通的:

Animal a = new Animal();
但这将:

Animal a = new Cat();

所以本质上,你要说的是,这是一个基类,你不能自己创建一个,你需要更多的信息,比如说一个继承自它的类。有点难以解释,所以希望这个例子能有所帮助

抽象是从简单对象构建复合对象的一种方法。例如,一个函数可以被看作是一种黑盒抽象形式,其中函数的内部工作对用户是隐藏的

一般来说,数据抽象是一种支持程序设计的方法 rs将复合数据对象的使用方式与从更原始的数据对象构造复合数据对象的详细信息隔离开来