当定义一个类时,需要定义一些方法来描述该类的行为特征,但有时这些方法的实现方式是无法确定的,针对这种情况C#允许在定义方法时不写方法体(方法体为定义方法里的内容),不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字修饰。例如:abstract void Shout(); //定义抽象方法Shout() 当一个类中包含了抽象方法,该类必须使用abstract关键字来修饰,使用abstract关键字修饰的类为抽象类。定义抽象类时需注意,包含抽象方法的类必须声明为抽象类,但抽象类可以不包含抽象方法。另外,抽象类是不可以被实例化的,因为抽象类中有可能包含抽象方法,抽象方法是没有方法体的,不可以被调用。如果想调用抽象类中定义的方法,则需要创建一个子类,在子类中实现抽象类的抽象方法。
如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另外一种方式来定义,即接口。定义接口时用interface关键字修饰。 例:
interface Animal
{
void Breathe();
void Run();
}
以上代码中,Animal即为一个接口。发现Breathe()方法和Run()方法并没有方法体,也没有访问修饰符,这是因为接口中定义的方法和变量都包含一些默认修饰符。接口中定义的方法默认使用"public"来修饰。
由于接口中的方法都是抽象方法,因此不能通过实例化对象的方式来调用接口中的方法。此时需要定义一个类,并实现接口中所有的方法。
接口特点:1.接口中的所有方法都是抽象的,因此接口不能被实例化 2.一个类可以实现多个接口,被实现的多个接口之间要用逗号隔开 3.一个接口可以继承多个接口,接口之间用逗号隔开。