接口和抽象类概述
- 接口是类的蓝图
- 在OOP中,接口是稳定,而抽象类和其子类是变化的.
接口和抽象类的区别
-
接口是"behaves like a",抽象类一个是"is a"
-
一个抽象类可以包括非抽象方法,和数据成员,接口的所有成员在效果上都是抽象的.
-
抽象类可以有构造器(不过通常是protected的),而接口不能.
-
接口成员的访问修饰符只能是public,而抽象类可以有定义其他访问修饰符(private , protected).
-
一个类可以现实任意多个接口,但只能继承自一个抽象类.
-
接口不能有数据成员,而抽象类可以.
虚方法和重写
- .NET中如果基类的方法,或属性不声明成虚的,则子类无法重写基类的方法或属性.(在java,默认所有方法都是虚的,方便呀*_*,子类直接覆盖基类的)
- 继承非虚方法是,.NET默认会隐藏其基类的方法,给出一个警告.
- 虚方法和重写表达的语意就是多态.
两句闲话
以前,我有一次面试,人家让我说出抽象类,接口,虚方法,重写的用途和使用场景,我当时没答出来.现在想想真的很不应该,面向对象的知识这么重要,我们很多人都没有掌握好.我现在还在模索中...
另一道题是,脱离IDE,完全用文本编程器,写一个Windows Forms程序:两个textbox,三个button,排列整齐,按下button显示messagebox,用命令行编译并运行效果.还好,这一道我给他整出来了.