工作两年了 现在回头看了一下发现基础非常不牢固 会的全是一些经常写的东西 项目里边接触少的或者是没有接触到的忘得是一干二净 现在开个帖子重新温习一下 可能会有错误内容 希望大家指正
virtual和abstract如果用来修饰方法 所修饰的方法必须是公有的 也就是需要加上public
1.virtual 方法(虚方法)
基类中声名虚方法必须实现 但是方法里边可以没有内容 eg:
public virtual Test(){}
派生类中如果没有重写该虚方法 派生类中的实例调用该方法则会调用到基类中的该方法
如果派生类使用override重写该方法后 则实例会调用重写后的该方法
2.abstract 方法(抽象方法)
此关键字只能用于在抽象类中修饰方法 且不能实现该方法 就是说只有抽象类才有抽象方法 当然也可以有不抽象的方法 eg:
abstract class Amclass
{
public adstract Test();
}
抽象类无法实例化 (没有对象 手动滑稽脸)
抽象方法的实现必须在派生类中使用override 进行实现(必须实现就算只加一个大括号)
3.interface 接口
此关键字表示这是一个接口
接口和抽象类的区别
1.抽象类虽然没有对象 但他仍然是一个类 他可以定义自己的字段 属性 方法(甚至可以实现非抽象的方法)
接口只能定义属性、素引器、事件和方法声明(只是声明哦)
2.抽象类只能被单继承 而接口可以多继承
细节类的有个大佬解释的非常完美 适用场景也解释的非常明白 我还没有完全读通 就不误导大家了
上链接:https://blog.csdn.net/fxh_hua/article/details/4464739