接口调用//接口不能实例化,但可以用继承的类实例化访问
public interface Itest
{
void sayHello();
}
class myItest:Itest
{
public void sayHello()
{
Console.WriteLine("I am Itest");
}
}
myItest one = new myItest;
Itest InterfaceObject = one as Itest;
InterfaceObject.sayHello();//此处调用的是myItest的sayHello函数
抽象类 //虚拟成员和抽象函数不能是私有的private.只能是public 和protected
public abstract class Aclasstest
{
public void sayHello();
protected void sayHello1();
//private void sayHello2();
}
class AclassTest:Aclasstest
{
public override void sayHello()
{
Console.WriteLine("I am public");
}
protected override void sayHello1()
{
Console.WriteLine("I am protected");
}
// public void sayHello2()
//{
//}
}
抽象类在继承类中的实现叫override重载。接口在继承类中的实现叫做函数的实现(换句话说,抽象类函数的实现是继承类函数的重载,接口函数的实现就是继承类的函数的方法体)
即:abstract不允许有方法体,必须被子类override重载。貌似抽象函数只能在抽象类中申明。
虚拟方法visutal,必须申明实现,必须有主体函数。所以抽象类中不可能有虚拟函数。虚拟函数可以被继承类override,不过其它函数(public和protected)何尝不是也可以override,我去。
最后,override相对在abstract的继承类中用的比较多然后是在virsual中还是用的比较多