当前位置:  开发笔记 > 编程语言 > 正文

抽象类的对象和抽象类的对象列表之间有什么区别?

如何解决《抽象类的对象和抽象类的对象列表之间有什么区别?》经验,为你挑选了3个好方法。

我们不能创建抽象类的对象,但我们可以创建List或它们的数组.有什么不同?



1> Grantly..:

列表或数组只是一组指针的占位符,您还没有创建任何实例.

当你说创建对象 - 你的意思是创建一个实例 - 你不能用抽象类.

但是你可以创建指向它们的列表或数组(并且是EMPTY) - 然后你可以将指针移动到派生类/对象的"真实"实例


"而你还没有创建任何实例." - 除了列表或数组; 它本身就是列表或数组的实例.

2> James Dunn..:

答案摘要:

List或数组本身不是一个抽象类,即使它声明它将保存的类型一个抽象类.

更详细的答案:

即使你不能创建一个抽象类的对象("of"这个词有些模糊,但显然你的意思是作为该类的直接实例化),你可以创建一个对象,它是一个抽象类的实例(因为它是扩展所述抽象类的具体类的实例.

基本上,给定抽象类Abstraction,以及Concrete扩展的具体类Abstraction,List意味着你可以在其中的任何东西,它是扩展的东西Abstraction的实例,例如Concrete.虽然数组在某些方面与列表有点不同,但同样也适用于它们.

例:

鉴于此类:

public abstract class Abstraction {

}

而这堂课:

public class Concrete : Abstraction {

}

你不能这样做:

Abstraction a = new Abstraction();

但你可以这样做:

Abstraction a = new Concrete();

然后你可以这样做:

IList list = new List();
list.add(a);



3> Marco Altier..:

可以声明并初始化一个列表,其中成员的类型是抽象类,因为要创建此对象,您不需要实际实例化抽象类.

从逻辑上讲,列表只是指针的容器.

例如,您可以定义抽象类的列表,但此列表可以在开头为空.

您也可以使用初始大小初始化列表,但在开始时它不包含对实际对象的引用:初始化将仅为指针预分配空间.

添加到列表中的对象必须是扩展抽象类的具体类的实例.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有