为什么抽象类可以创建数组

BruceLu 2013-05-23 07:56:59
最近在看《C#入门经典.第5版.(Beginning.Visual.C#.2010)》,刚开始学 C# 不久,技术比较菜。望各位大牛能指点一下。这里先万分感谢了。
我的问题是这样的,按抽象的定义是不能创建对象的,可以为什么书上的 Demo (如下),可以用创建抽象类的数组?而且还不报错。
namespace Ch11Ex01
{
public abstract class Animal
{
protected string name;

public string Name
{


namespace Ch11Ex01
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Create an Array type collection of Animal " +
"objects and use it:");

Animal[] animalArray = new Animal[2]; //为什么这行代码却没有任何错误呢?还能编译通过。
Animal myObj = new Animal(); //编译也无法过,报错
...全文
1155 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜鸟王小凡 2013-05-24
  • 打赏
  • 举报
回复
你在 好好看看书,
oYanSiDeYu123456 2013-05-24
  • 打赏
  • 举报
回复
看到个简单的准备拿点分,进来就看到有大牛都说完了
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
创建一个数组,不过是创建一个数组而已,并没有创建Animal对象!
这个才说到了点子上。只是一组引用而已,又没有对象存在。
threenewbee 2013-05-23
  • 打赏
  • 举报
回复
抽象类的数组又不是抽象类!
  • 打赏
  • 举报
回复
创建一个数组,不过是创建一个数组而已,并没有创建Animal对象!
无为而治啊 2013-05-23
  • 打赏
  • 举报
回复
namespace Ch11Ex01 { public abstract class Animal { protected string name; public string Name { … namespace Ch11Ex01 { class Program { static void Main(string[avxrt.com] args) { Console.WriteLine("Create an Array type collection of Animal " + "objects and use it:"); Animal[] animalArray =www.aqirt.com[2]; //为什么这行代码却没有任何错误呢?还能编译通过。 Animal myObj = new Animal(); //编译也无法过,报错
vo__ov 2013-05-23
  • 打赏
  • 举报
回复
Animal[] animalArray = new Animal[2]; 数组里面两个都会是 null
hztltgg 2013-05-23
  • 打赏
  • 举报
回复
Animal是一个类,继承于Object。 Animal[]也是一个类,继承与Array,Array继承与Object。 这两个类本身一点关系都没有,只有一点联系,就是Animal[]可以放Animal类型的实例。
please_call_me_J 2013-05-23
  • 打赏
  • 举报
回复
说实话,我抽象类用得少,感谢楼上前辈给我也普及了
XBodhi. 2013-05-23
  • 打赏
  • 举报
回复
抽象类不能创建实例,但是他是有构造函数的。 数组一个新的对象,而不是抽象数组, 如果你用 public abstract CustomCollection:List<T> {} 他是就不可以初始化了。 如果是你的 CustomCollection[] coll = new CustomCollection[]{}; 因为就不是一个对象。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧