理论的看不懂,请发上简单的代码,然后容易理解的讲解下,还有接口的什么时候用的到,还有什么地方要注意。反之同上请讲下抽象类。
诚心提问最后100分了,越详细越好,最好是个人经验!!
最后我自己的理解,比如接口里要有1个方法是不是只是先声明下,具体实现在继承它的类中吗?
写了两个例子,可以下载下来参考一下
说说自已的理解吧,有什么不对的地方,请指证,就不说什么理论了,举个例子说一下
楼主理解的没错,接口只声名方法,没有方法体,具体实现在它实现类中.
举个例子:
我想在一个函数中画一个矩形
定义一个矩形类
public class Rectangle {
public void Draw() {
//画矩形
}
}
//在这个函数中调用Rectangle类的Draw方法画矩形
public void DrawShape(Rectangle shape) {
shape.Draw();
}
可是我又在这个函数中画圆,怎么办呢
public class Circle {
public void Draw() {
//画圆
}
}
//我还得再定义一个函数调用Circle类的Draw方法画圆
public void DrawShape(Circle shape) {
shape.Draw();
}
...
如果我要有好多形状是不是要定义很多这样的函数呢?有没有更好办法呢?
当然有,利用抽象类或者接口,可以解决,我们可以先定义一个接口,接口有一个绘制的方法,具体实现由子实现
public interface IShape {
void Draw();
}
public class Rectangle : IShape{
public void Draw() {
//画矩形
}
}
public class Circle : IShape {
public void Draw() {
//画圆
}
}
这样矩形和圆实现了同一个接口,也就是可以通过这一个接口,调用不同子类的Draw方法
public void DrawShape(IShape shape) {
shape.Draw();
}
IShape shape = new Rectangle(); //创建一个矩形
DrawShape(shape); //画矩形
IShape shape = new Circle();//创建一个圆
DrawShape(shape);
这个样就可以只定义一个绘制函数,可以绘制不同的图形,这就是接口的魅力
抽象类与类似,只不过抽象的方法可以有方法体,可在在子类中进行重写(覆盖).