第5篇 抽象_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 第5篇 抽象

第5篇 抽象

 2017/12/1 22:48:47  无感  程序员俱乐部  我要评论(0)
  • 摘要:一抽象类描述一个事物,由于没有足够的信息,这时就将这个事物称为抽象事物。abstract为抽象关键字,被其声明的类称为抽象类,其声明的方法称为抽象方法。抽象属性声明不提供属性访问器的实现,它只声明该类支持的属性,而访问器的实现留给派生类。抽象方法声明不提供方法的实现,他必须是一个空方法,而将方法实现留给派生类。派生类必须重载抽象基类的抽象方法。抽象类是用来作为基类的,不能直接实例化,即不能用抽象类去创建对象。抽象类的用途是提供多个派生类可共享的基类公共定义。抽象类特点
  • 标签:抽象

抽象类

         描述一个事物,由于没有足够的信息,这时就将这个事物称为抽象事物。abstract为抽象关键字,被其声明的类称为抽象类,其声明的方法称为抽象方法。

        抽象属性声明不提供属性访问器的实现,它只声明该类支持的属性,而访问器的实现留给派生类。

        抽象方法声明不提供方法的实现,他必须是一个空方法,而将方法实现留给派生类。派生类必须重载抽象基类的抽象方法。

        抽象类是用来作为基类的,不能直接实例化,即不能用抽象类去创建对象。抽象类的用途是提供多个派生类可共享的基类公共定义。抽象类特点:

  1. 抽象类用abstract声明,不能被实例化(不能new)。
  2. 只有当子类覆盖了所有的抽象方法后,子类才可以创建对象,如果没有覆盖所有抽象方法,那么子类还是一个抽象类。
  3. 抽象类也是不断向上抽取而来的,抽取了方法声明儿不确定具体的方法内容。由不同的子类完成具体的方法。
  4. 抽象类可以包含抽象的成员,如抽象属性和抽象方法,也可以包含非抽象的成员,甚至还可以包含虚方法。注意:没有抽象字段,字段是不可以抽象的。

几个关于抽象类的问题

        1.抽象类中有构造函数吗?

             有。抽象类的构造函数虽然不能给抽象类对象实例化,因为抽象类不能创建对象,但是抽象类有子类,抽象类的构造函数可以用于子类对象实例化。

        2.抽象类一定是个父类吗?

            是的。必须需要子类覆盖抽象方法才能实例化,使用这些方法。

        3. 抽象类中可以不定义抽象方法吗?

            可以的。

        4. 抽象关键字abstract和哪些关键字不能共存?

            sealed,private,static.一是因为抽象类不能是密封或者静态的。二是因为虚拟成员和抽象成员不能私有

抽象类与接口的区别

  1. C#支持单继承,不直接支持多继承(接口可以多继承)。它们的派生类只能继承一个抽象类,但是可以实现多个接口。即单继承,多实现。
  2. 抽象类中可以包含字段,构造函数,析构函数,静态成员或者常量等,但是接口中不可以。
  3. 抽象类中可以定义非抽象成员的实现,但是接口中不能定义任何实现。
  4. 抽象类中的成员可以私有的(只要是不抽象的),受保护的,内部的或者受保护的内部成员,但是接口中的成员必须是公共的。

        备注:关于接口的内容请看“第6篇 接口”

上一篇: 美团点评宣布组织升级 聚焦四大LBS场景 下一篇: 没有下一篇了!
发表评论
用户名: 匿名