C# 中的abstract和virtual

重新理解了下关键字abstract,做出以下总结:

1.标记为abstract的类不能实例化,但是依然可以有构造函数,也可以重载构造函数,在子类中调用

2.abstract类中可以有abstract标记的方法和属性,也可以没有,被标记的方法和属性不能有实现

3.子类如果不被标记为abstract,就必须使用override实现abstract父类中标记为sabtract的方法和属性

注意点:

1.被标记为abstract的方法,不能再用static或virtual修饰符修饰

2.在静态属性上不能使用abstract修饰符修饰

 

 3.abstract标记类继承接口后,必须实现接口方法,或者标记为abstract后,由子类实现

共同点:

1.virtual与abstract 都可以被子类重写,使用override关键字

2.都不能标记为private

不同点:

1.abstract 方法只能在abstract类中声明,不能在普通类中声明,virtual方法则没有限制

2.abstract方法不能有方法体,virtual必须有方法体,哪怕一个{}

3.子类必须实现abstract方法,virtual则不必要

猜你喜欢

转载自blog.csdn.net/yunxiaobaobei/article/details/129366608
今日推荐