虚方法(virtural)抽象类(abstract)

来源:互联网 发布:java join yield 编辑:程序博客网 时间:2024/05/29 07:11

VIRTUAL关键字用于修饰方法、属性、索引器、或事件声明,并且允许在派生类中重写这些对象。

virtual和override是对应出现的

 

多态(polymorphism)

多态是指两个或多个属于不同类的对象,对同一个消息做出不同响应的能力

 

 abstract修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用ABSTRACT修饰符以指示某个类只能是其它类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。

 

抽象类的特性:

  抽象类不能被实例化

  抽象类可以包含抽象方法和抽象访问器

  不能用SEALED外包符修改抽象类,这意味着抽象类不能被继承。

  从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现。

 

抽象方法总结:

  抽象方法是隐式的虚方法。

  只允许在抽象类中使用抽象方法声明。

  因为抽象方法声明不提供实际的实现,所以没有方法体,声明方法只是以分号结束,并且在签名后没有大括号,实现由一个重写方法提供,此重写方法是非抽象类的成员。

  在抽象方法声明中使用STATIC或VIRTUAL修饰符是错误的。

  除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。

  在静态属性上使用ABSTRACT修饰符是错误的。

  在派生类中,通过包括使用OVERRIDE修饰符的属性声明,可以重写抽象的继承属性。

 

抽象类的构造函数:

  不要在抽象类型中定义公共的或受保护的内部构造函数,具有PUBLIC或PROTECTED INTERNAL可见性的构造函数用于能进行实例化的类型。任何情况下抽象类型都不能实例化。

  应在抽象类中定义一个受保护(PROTECTED)构造函数或内部(PRIVATE)构造函数。

  如果在抽象类中定义一个受保护构造函数,则在创建派生类的实例时,基类可执行初始化任务。

 

抽象方法和虚方法的区别:

  抽象方法和虚拟方法的区别在于:虚拟方法有一个实现部分,并为派生类提供了覆盖该方法的选项,相反,方法不有提供实现部分,强制派生类覆盖方法(否则派生类不能成为具体类)

  ABSTRACT方法只能在抽象类中声明,虚方法则不是。

  ABSTRACT方法必须在派生类中重写,而VIRTUAL则不必。

  ABSTRACT方法不能声明方法实体,虚方法则可以。

  包含ABSTRACT方法的类不能被实例化,而包含VIRTUAL的类则可以

原创粉丝点击