×

抽象类可以实例化

抽象类可以实例化(抽象类不是不能实例化吗,为什么作为参数可以)

admin admin 发表于2022-09-02 01:04:47 浏览133 评论0

抢沙发发表评论

本文目录

抽象类不是不能实例化吗,为什么作为参数可以


抽象类确实不能实例化。
在说实例化之前,我想先介绍下声明,初始化,实例化。
声明:只生成对象不赋值的过程;
初始化:给对象赋值的过程;
实例化:使用new为对象分配内存的过程。
显然Person p是声明,所以作为参数可以。

抽象类可不可以.实例化对象


引用性说明类,我学C++好像没听过
抽象类可以给你解释一下
抽象类的概恋:
抽象类:就是包含有未定义的虚函数的类,也就是说只在类中声明了一个抽象类,但没有具体定义,或者把虚函数定义为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关键字修饰,有以下特点:

  1. 不能实例化对象。

  2. 抽象类中可以含有抽象方法,也可以不含有。

  3. 含有抽象方法的类一定是抽象类。

  4. 抽象类需要被继承才有意义。


java抽象类不能实例化


很简单,抽象类不象具体类那样描述一类具体事物,它是提取多种具有相似性的具体事物的共同特征而产生的,比如,helicoptor,jet,fighter父类plane,有start(),takeOff(),speedUp(),changeDirection()等方法,这是共性,但现实中有一个具体的plane吗?没有,它是抽象出来的,根本不存在。所以实例化一个plane是没有意义的,因此面向对象程序设计机制禁止对象实例化
-抽象类可以实例化

抽象类不能被实例化吗


抽象类可以有自己的构造方法,但是不能直接通过new进行实例化。但是可以通过子类继承,实例化子类的时候抽象类也会被实例化。你上面这个其实是在抽象类内部实例化,重新的抽象方法,但是这个有什么意义呢?

C++ 抽象类能实例化吗


1.抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2.抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。只要把这些东西对应到生活中的概念就明白面向对象的设计本身来源于生活,我们对事物的理解本身都是一样的哲学,理解概念之后怎么写代码就更容易掌握。
3.抽象类是表示部分地实现功能,比如把某些已经确定的功能实现了,而抽象的功能则表示未实现,因为不能确定子类用什么方式实现它或者说把可能性和机会留给子类,比如对于宠物这个抽象类“睡觉“这个方法就是抽象的,因为子类的实现方法各有差异,狗经常待在墙边阴凉处睡觉,而猫则爬到树上睡觉,我们父类中不能把这个”个性“的东西放入”共性“的父类中,“共性”是它们都会睡觉,但具体怎么睡觉则是”个性“,因此只能把它弄成抽象的,把机会留给子类来实现它。抽象类和抽象方法的目的是相同的。当子类实现这些抽象方法后就是叫”实现“,如果这个方法在父类中已经实现了不是抽象的而子类再来实现一次就是“覆盖”或“重写“了父类的方法,这2个都叫实现了”多态“特性。“多态”就是某个“共性”在各个子类中表现出不同的“个性”,但都同时保留着“共性”。
例如:
Pet pets = new Pet { new Dog(), new Cat()};
for(int i = 0;i 《 pets.length; i++) {
pets[i].doSleep(); // 这时每个个体的”个性“表现出现了,就是”多态“。程序是在用它们声明的”共性“ doSleep 来调用这个方法的。这里面就是用“实现”/”覆盖“/“改写”父类方法达到的。覆盖了的方法在调用时会找对应的子类的方法而不是直接用父类提供的,在这里猫会按猫的习惯睡觉,狗会按狗的习惯睡觉。
}
-抽象类可以实例化

java中抽象类可以被实例化吗


//抽象类!
 abstract class A
{
//方法1:抽象方法!
abstract void show();

//方法2:非抽象方法!
public void method()
{
}
}
/*
这是一个合法的抽象类,里面可以包含抽象方法和非抽象方法;
假如都如同方法2,要是不能被实例化,还能找点借口和理由!
但是:
如果是方法1,怎么样?
那方法根本没有方法体..你说,就算能让你实例化,你的对象方法里面
会是什么?
这么说明白了吗?
所以就有了Java的规定,抽象类需要被继承以后才可以实例化!
其实如果抽象类里面是可以全部放法非抽象方法的,这也是一个结构..用静态来访问,具体用处
暂时我也还不知道,但是可以这么做!(这点说的是废话,额外小知识!)
*/
-抽象类可以实例化

java抽象类可以实例化吗


抽象类其实是可以实例化的,但是他的实例化方式不是通过new方式来创建对象,而是通过父类的引用来指向子类的实例来间接地实现父类的实例化(因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,也就把其父类(抽象类)给实例化了)
-抽象类可以实例化

抽象类可以被实例化吗


可以被实例化
抽象类的特点:
1、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2、允许(但不要求)抽象类包含抽象成员。 3、抽象类不能被密封。 当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写哪些抽象成员。在下边的示例中: abstract class A{ public abstract void F();} abstract class B: A{ public void G() {}} class C: B{ public override void F() { // actual implementation of F }} 抽象类 A 引入抽象方法 F。类 B 引入另一个方法 G,但由于它不提供 F 的实现,B 也必须声明为抽象类。类 C 重写 F,并提供一个具体实现。由于 C 中没有了抽象成员,因此可以(但并非必须)将 C 声明为非抽象类。
-抽象类可以实例化

抽象类中是否一定要有抽象方法


抽象类中不一定要有抽象方法。

在编程语句中用 abstract 修饰的类是抽象类。抽象类是不完整的,它只能用作基类,不能生成对象。抽象类可以包含抽象方法、非抽象方法和抽象访问器。可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。-抽象类可以实例化

扩展资料:

抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用

抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类。另外,实现抽象方法由overriding方法来实现。-抽象类可以实例化