/*----------------------------------------------------------------------*/
//接口:
1.接口是公开的public
2.接口间也可以相互继承
3.接口继承后
成员要必须被实现
public interface A
{
void add(int a,int b);
int
a;
//还可以有其他的成员
}
public class B:A
{
void add(int a,int b){return a+b;}
private int _a;
public int a{
set{ _a=a;}
get{ return _a;}
}
}
/*-------------------------------------------------------------------------*/
//抽象类:不可实例化
//抽象类(abstract class )
1.只要有个方法是abstract ,那么该类是abstract
类;
2.abstract 方法在子类中必须有实现;在abstract 类中的abstract 方法只有声明而不能有方法体;
3.abstract 方法在子类中被实现时要加上override关键字;
4.abstract 类方法中非abstract
方法在子类中重写时加上new关键字;
//就像马这种生物,只可以派生为 千里马 汗血宝马 等
public abstract class
A
{
public abstract add(int a,int b);
public int getA(){return
a;};
public int a;
}
public class B:A
{
public override add(int a,int b){return
a+b;};
//public new int getA(){return a*a;};
}
/*------------------------------------------------------------------------*/
//virtual
虚类
1.只要有一个方法是virtual 就是虚类
2.其中的 虚方法可以被重写或不被重写,
public class
Dimensions
{
public const double PI = Math.PI;
protected double x, y;
public Dimensions()
{
}
public Dimensions(double x, double y)
{
this.x = x;
this.y = y;
}
public virtual double Area()
{
return x *
y;
}
}
public class Circle : Dimensions
{
public Circle(double
r) : base(r, 0)
{
}
public override double Area()
{
return PI *
x * x;
}
}
菜鸟总结 interface abstract virtual. 的区别
原文:http://www.cnblogs.com/lxx-2013/p/3556067.html