c++中抽象类到底有什么用处?

如题所述

    抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。只要把这些东西对应到生活中的概念就明白面向对象的设计本身来源于生活,我们对事物的理解本身都是一样的哲学,理解概念之后怎么写代码就更容易掌握。

    抽象类是表示部分地实现功能,比如把某些已经确定的功能实现了,而抽象的功能则表示未实现,因为不能确定子类用什么方式实现它或者说把可能性和机会留给子类,比如对于宠物这个抽象类"睡觉“这个方法就是抽象的,因为子类的实现方法各有差异,狗经常待在墙边阴凉处睡觉,而猫则爬到树上睡觉,我们父类中不能把这个”个性“的东西放入”共性“的父类中,“共性”是它们都会睡觉,但具体怎么睡觉则是”个性“,因此只能把它弄成抽象的,把机会留给子类来实现它。抽象类和抽象方法的目的是相同的。当子类实现这些抽象方法后就是叫”实现“,如果这个方法在父类中已经实现了不是抽象的而子类再来实现一次就是“覆盖”或“重写“了父类的方法,这2个都叫实现了”多态“特性。“多态”就是某个“共性”在各个子类中表现出不同的“个性”,但都同时保留着“共性”。
    Pet[] pets = new Pet[] { new Dog(), new Cat()};
    for(int i = 0;i < pets.length; i++) {
        pets[i].doSleep(); // 这时每个个体的”个性“表现出现了,就是”多态“。程序是在用它们声明的”共性“ doSleep 来调用这个方法的。这里面就是用"实现”/”覆盖“/"改写”父类方法达到的。覆盖了的方法在调用时会找对应的子类的方法而不是直接用父类提供的,在这里猫会按猫的习惯睡觉,狗会按狗的习惯睡觉。
    }




温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-11
抽象类就像是一个物种类一样!
比如。抽象类就是鸟这个物种。
这个鸟是没有这个动物的。
从这个鸟类里面继承出来了鸡孔雀等。
然后虚函数就比方是特征。比如鸡的特征就是不会飞。
你大概明白了吧
第2个回答  推荐于2017-11-23
提供了做蛋糕的模子和一套流程,至于做出来的蛋糕具体是什么口味还得由你自己决定,但至少能保证你做出来的是蛋糕而不是面包或者别的什么,是共性与个性的统一!本回答被提问者采纳
第3个回答  2010-12-11
便于重用,下次你用到抽象类中的小类别就可以不用重写了
第4个回答  2020-12-23

抽象类的作用是什么?
1、在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许...

c++中抽象类到底有什么用处?
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是不...

什么是抽象类?抽象类有什么作用?
作用:通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类里面可以有非抽象方法但接口里只能有抽象方法 声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于...

抽象类的作用是什么?
抽象类在面向对象编程中起着至关重要的作用。它主要功能是隐藏具体实现细节,通过定义一组行为的抽象描述,允许开发者为这些行为提供多种可能的具体实现,这些具体实现则体现在派生类中。这样的设计使得模块能够稳定地操作抽象体,保持其结构的灵活性,避免直接依赖于具体实现,从而遵循面向对象设计的开放-关闭...

C++ 抽象类能实例化吗?
C++中的抽象类是一个关键概念,它不能直接实例化。试图使用new运算符创建一个抽象类的对象会导致编译错误。抽象类通常用于表示问题领域的抽象概念,通过纯虚函数或抽象方法来定义一组共性的行为。在C++中,这些类是不完整的,仅作为其他类的基类使用,用于类型隐藏和充当全局变量的角色。抽象类的特点在于它...

C++日志(四十四)干货!带你搞清楚什么是抽象类
抽象类定义:在C++中,含有纯虚函数的类称为抽象类。抽象类的特性包括不能实例化。例如,在Animal和其子类Duck中,不能定义Animal类的具体对象。抽象类的主要作用是声明类族对外的接口,但抽象类本身不提供纯虚函数的实现。只有当使用抽象类作为父类时,其子类实现全部纯虚函数后,子类才能实例化。通过...

关于c++抽象类的问题
C++ 里设计了 “抽象类”目的是用作类似类的“基类”,给派生出的类 同类性质的东西 有同样的名字,但有不同的计算实现的方法。例如,抽象类 叫 平面图形,它有成员函数:面积计算,周长计算,派生出的类,非抽象类:椭圆类,矩形类,三角形类等。抽象类 作为 基类 里 面积计算,周长计算 都是 ...

抽象类:C++中定义,含有纯虚拟函数的类称为抽象类,它不能生成对象。_百...
第一种是正确的 C++中含有纯虚拟函数并且所有纯虚函数并未完全实现的类称为抽象类,它不能生成对象 第二种说法:当把一个类的构造函数或析构函数的访问权限定义为保护时,这种类可以由其派生类成员函数生成对象啊,这当然就不是抽象类

抽象类简介
抽象类是C++和Java编程语言中的一个重要概念。在C++中,当一个类中包含纯虚拟函数时,该类就被认为是抽象类。同样,在Java中,具有抽象方法的类也被视为抽象类。抽象类本身不能实例化,只能作为基类使用。这意味着你不能直接对抽象类使用new运算符创建对象。抽象类与非抽象类的主要区别包括:1. 抽象...

C++中 抽象类和虚基类用途上有什么区别
我能想到的抽象类用处,大概这个优点可以用一用:含有纯虚函数的类都是抽象类。基类中实际上并不使用这个函数,它只是通知编译系统:在这里声明一个虚函数,留待在派生类中定义。为一个类族提供一个公共接口。例如,计算平面形状的面积,抽象类 基类中 virtual float area( ) const =0;派生类三角形,...

相似回答