抽象的真正定义是什么?

时间:2013-02-17 08:43:18

标签: abstraction

我在几个网站上看到过抽象的不同含义。

有些网站说

  

选择相关数据并忽略无关紧要的数据

有些网站说

  

从同类对象中学习普通类

作为示例与公共汽车,货车和汽车相比,可以将车辆类视为摘要。

我对这些定义感到困惑..什么是正确的?

3 个答案:

答案 0 :(得分:1)

抽象的最简单定义是“隐藏其规范中的实现细节”。 最佳实时示例是:假设您是一名驾驶员,那么您需要知道“如何驾驶汽车(其规格)”,而不是汽车的实施细节(如引擎如何构建等)。

最简单的编程示例是System.out.println()函数。作为程序员,您需要知道如何使用System.out.println(),而不是它的实现细节。 希望它能让你怀疑。

答案 1 :(得分:0)

抽象是能够使用高级概念而忽略低级细节。

我喜欢我在McConnell的书“Code complete”中看到的例子:

  

如果将对象称为“house”而不是组合   木头,玻璃和钉子,你正在使用抽象。

答案 2 :(得分:0)

抽象是"代表基本功能而不代表背景细节。"

抽象可以让你专注于对象的作用而不是它是如何做的。

抽象通过提供相关信息为您提供类或对象的通用视图。

抽象是隐藏对象的工作方式,以可理解的方式显示对象信息的过程。

真实世界的抽象示例: -

假设您有一个移动电话对象。

假设您有3部手机: -

  • 诺基亚2700(功能: - 通话,短信,FM收音机,MP3,相机)
  • Black Berry(功能:-Calling,SMS,FM收音机,MP3,相机,录像,阅读电子邮件)
  • Black Berry(功能:-Calling,SMS,FM收音机,MP3,相机,录像,阅读电子邮件)

对象的抽象信息(必要和公共信息)"移动电话"拨打任何号码都可以发送短信。"

这样,对于手机对象,您将拥有如下的抽象类: -

abstract class MobilePhone
{
    public void Calling();
    public void SendSMS();
}

public class Nokia1400 : MobilePhone
{

}

public class Nokia2700 : MobilePhone
{
    public void FMRadio();
    public void MP3();
    public void Camera();
}

public class BlackBerry : MobilePhone
{
    public void FMRadio();
    public void MP3();
    public void Camera();
    public void Recording();
    public void ReadAndSendEmails();

}

抽象意味着将所有变量和方法放在必要的类中。

例如: - 抽象类和抽象方法。

抽象是常见的事情:

示例:

如果拼贴中有人告诉您填写申请表,您将填写您的详细信息,如姓名,地址,出生数据,学期,您获得的百分比等。 如果某位医生为您提供填写详细信息的申请,您将填写详细信息,如姓名,地址,出生日期,血型,身高和体重。

在上面的例子中看到了什么是常见的事情?年龄,名称,地址 - 因此您可以创建由称为抽象类的常见事物组成的类。该类不完整,可以由其他类继承。