接口 抽象类

  今天复习了接口和抽象类 可能是我原来就没学好吧, 今天听的又是晕晕乎乎的。。。还好下课有看了看书,总算是有了点了解。。。

接口:是抽像类的变体。在接口中,所有方法都是抽像的。。  接口里没有方法体。。接口不可以实例化。

关键字:  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("反刍。。。");
        }
    }

 

 

 

 

你可能感兴趣的:(接口 抽象类)