抽象类为什么不能实例化?

如题所述

抽象类的概恋:

抽象类:就是包含有未定义的虚函数的类,也就是说只在类中声明了一个抽象类,但没有具体定义,或者把虚函数定义为virtual void f()=0;这样的形式。注意函数后有一个=0。因此派生类必须实现这个函数,如果派生类没有实现这个函数,则这个派生类也是抽象的。

抽象类为什么不能实例化对象:因为抽象类中包含有没有定义的函数,因此不能用抽象类来实例化对象。但可以声明抽象类的指针指向派生类。

示例:

class A{public: virtual void f()=0;};  //声明一个抽象类

class B:public A{public: void f(){cout<<"B"<<endl;};

void main()

{A ma; //错误,因为类A是抽象类,含有未实现的函数f()。因此不能创建对象

B mb;

A *p=&mb; //可以创建抽象类的指针指向派生类对象。

}

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 [1] 

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。 [1] 

比如,在一个图形编辑软件的分析设计过程中,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域并不是直接存在的,它就是一个抽象概念。而正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。

温馨提示:内容为网友见解,仅供参考
无其他回答

抽象类可以被实例化吗
抽象类是不能被实例化的。实例化实际就是在内存中开辟一块空间用于存储新的产物,即对象。在抽象类中,子类实例化会先初始化父类,但父类初始化并不是创建一个父类对象,而是把父类中定义的对象相关属性都初始化,因为这些属性子类对象也是拥有的。所以,为了保证子类对象的完整性,要从最底层的父类...

抽象类为什么不能被实例化?
抽象类无法实例化,是因为没有完整的方法实现,无法生成一个具体对象。这如同你可以实例化一个苹果,但不能实例化一个水果,因为水果是抽象概念,而苹果是具体实例。内存管理方面,对象实例化涉及向JVM申请内存空间。抽象类由于没有具体的成员变量和方法,无法准确分配内存,这成为实例化障碍。抽象类主要用于...

抽象类为什么不能实例化
抽象类顾名思义就是将类抽象成接口的。它的实现由继承它的类完成。所以不能被实例化,主要是没必要。

Java 抽象类能不能实例化
实例化,简单地说,是为类对象分配内存空间,使其具备运行所需的状态。然而,对于抽象类来说,它缺乏具体实现细节,没有固定的成员变量和方法。这就好比试图为一个未填满内容的模板分配空间,JVM无法确定如何为抽象类提供恰当的内容。当你试图实例化一个抽象类,例如:java AbstractMap abstractMap = new ...

java语言中的抽象类如何实例化?
抽象类在Java中是无法直接实例化的,因为抽象类中至少包含一个抽象方法,该方法未实现任何具体的代码逻辑。直接实例化抽象类会导致编译错误。要使用抽象类,需要首先创建一个类继承抽象类,然后实例化这个继承类的对象。继承抽象类意味着你必须实现所有抽象方法。通过继承抽象类并创建实例,你可以充分利用抽象...

Java中的抽象类为什么不能实例化
首先抽象类不能实例化是一个java的语法规范。抽象类中是可以包含抽线方法,不是必须。如果一个抽象类没有一个抽象方法,那么他和一个普通java类就没有任何区别了,也就是说,在这种情况下又没有abstract修饰都是一样的。定义了一个包含抽象方法的抽象类,其子类在继承自该抽象类的时候,子类就必须...

抽象类是否能产生对象?在内存中真的就没有它的对象吗?
抽象类本身不能被实例化,即不能直接创建抽象类的对象。这是因为抽象类是一种不完整的类,其中可能包含抽象方法或未实现的方法,这些方法必须由其子类实现。因此,抽象类只能被用作其他类的父类,用于定义通用的属性和方法。虽然抽象类本身不能被实例化,但其子类可以被实例化。在创建子类的对象时,会...

抽象类可以实例化对象?
抽象类,一种特殊的类,其核心特性在于使用abstract关键字标识。它的主要特点是不能直接被实例化,即我们无法创建抽象类的直接对象。这是由于抽象类的目的是为了提供一个基础框架,供其他类继承并实现其抽象方法。抽象类可以包含抽象方法,这些方法没有具体的实现,仅声明其存在。同时,抽象类也可以不含抽象...

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

抽象类的作用是什么?为什么不能被实例化?
比如,helicoptor, jet, fighter父类plane,有start(),takeOff(),speedUp(),changeDirection()等方法,这是共性,但现实中有一个具体的plane吗?没有,它是抽象出来的,根本不存在。所以实例化一个plane是没有意义的,因此面向对象程序设计机制禁止对象实例化 ...

相似回答
大家正在搜