c#中的 virtual override 和abstract 以及sealed
1、如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖。
2、如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏。
3、如果子类实现了父类相同的方法(相同的方法名称及签名),而没有new,在编译时会报警,但编译仍然能够通过!
4、调用父类方法:base.方法名()
5、abstract类是一个抽象类,不能被实例化
new 和override的区别
1.override重写虚方法,那么就只剩下重写以后的方法;
2.new隐藏基类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了。new声明的方法,当使用子类的类型来调用的时候,它会运行子类中的函数,而如果类型是基类的话,被隐藏的基类函数就会站到前台来
3.在子类中new父类中的方法,父类中的方法不一定是虚类型,即virtual。但是在子类中override父类中的方法,父类的方法一定得是虚类型
sealed密封类有点类似JAVA,php中的final关键字 被sealed修饰的类不能作为父类被继承