今天复习了接口和抽象类 可能是我原来就没学好吧, 今天听的又是晕晕乎乎的。。。还好下课有看了看书,总算是有了点了解。。。
接口:是抽像类的变体。在接口中,所有方法都是抽像的。。 接口里没有方法体。。接口不可以实例化。
关键字: interface
结构:interface+名+{ 类型+方法名+(参数) }
使用原因:在需要在不相关类中实现同以功能时,就可以用接口来实现;接口没有访问修饰符也没有方法体,只能依托于一个类在类中写继承写方法体;
方法: 借助类
注:一般接口命名都是以 " I " 开头的,也可以不用 。。。
用一个例子介绍一下。
Program类
class Program
{
static void Main(string[] args)
{
//类可以继承多个接口但只能继承一个父类。。。
horse H = new horse("小马");
ILandBound I = H;
int legs = I.tui();//调用的 ILandBound 接口中的tui()方法;
Console.WriteLine(legs);
legs = L.tui();
Console.WriteLine(legs);
Console.ReadKey();
}
}
}
ILandBound 接口中
interface ILandBound
{
int tui();
}
horse 类中
class horse:Mammal,ILandBound,ILiangQi //当一个类继承父类和接口时,父类名在前,接口名在后。
{
public horse(string name) : base(name) { }//传name;
int ILandBound.tui() //当只继承一个接口时,要加Public 不是一个时 不能加public。
{
return 4;
}
int ILiangQi.tui() //当该类继承两个或两个以上的接口时,方法名前需要加上所属接口的 接口名+.
{
return 2;
}
ILiangQi接口中
interface ILiangQi
{
int tui();
}
显示的结果就是4,2。
抽象类和抽象方法
关键字:Abstract
作用: 它用于要创建一个体现某些基本行为的类,并为该类声明方法
用法:
GrazingMammal 类
abstract class GrazingMammal:Mammal,IGrazable // 抽象类 关键字 abstract
{
public GrazingMammal(string name) : base(name) { }
public abstract void ChrewGrass(); //抽象方法 默认为虚方法所以可以不用virtual修饰就能使用override。
//{
// Console.WriteLine("Chrewing Grass...");
//}
cow类
class cow:GrazingMammal
{
public cow(string name) : base(name) { }
public override void ChrewGrass()
{
Console.WriteLine("反刍。。。");
}
}