黑马程序员技术交流社区

标题: 接口问题 [打印本页]

作者: 张松    时间: 2013-4-17 21:33
标题: 接口问题
本帖最后由 张松 于 2013-4-20 20:14 编辑

public class Student : Person, IKouLanable
    {
        public void KouLan()
        {
            Console.WriteLine("我是学生,我可以扣篮");
        }

        public void Study()
        {
            Console.WriteLine("我是学生,我会学习");
        }
    }


    public interface IKouLanable
    {
        void KouLan();

    }
如上边的代码,为什么要使用接口并继承呢?我直接在Main函数中声明并且使用不就行了么?接口没感觉到方便啊?
作者: 殇_心。    时间: 2013-4-17 21:46
接口可用来实现多重继承,java中多重继承,定义类时,只可有一个父类。
但是每个类可以实现多个接口,以这种方式来实现多重继承。
当然你上面代码就说了一个学生,感觉没什么。
如果你还有工人,教师等等,都有需要吃饭这个动作吧?
这时候你总不可能在main函数里面写吧?
作者: $love    时间: 2013-4-17 22:23
接口的实现首先解决了C#中单继承的问题,可以同时实现多个接口。
接口是对外部暴露的一些原则,是程序的功能扩展。举个例子吧?
就好比你 笔记本电脑就是一个应用程序,USB接口就相当于我们程序中的接口,就是电脑生产厂商和一些其它厂商量定义好的一些接口。
只要你按照这些规则生产的一些U盘,什么USB接口的鼠标....都可以用是吧!这样就可以提高程序的扩展性。
假如没有接口:
你把笔记本电脑全部封装,那么你想扩展一下硬盘容量。。。。那你是不是得另外买电脑
作者: HM朱百青    时间: 2013-4-17 22:27
1,在C#中,类只能单继承,但是接口却可以实现多个,所以当我们需要多继承的时候,我们就可以通过接口来实现,这是一种情况;比如说现在有一个NBAPlayer类,也继承了Person,而NBAPlayer也打篮球,我们也可以让他实现IKouLanable接口!
2,当有多个类实现同一个接口的时候,我们就可以实现接口编程了,把接口当作是一个抽象类来使用;  同样是上面的那个例子,这个时候我们完全可以在Main方法中这样来写:

   IKouLanable[]  dunk=new IKouLanable[2];
   dunk[0]=new Student();
  duck[1]=new NBAPlayer();
foreach(IKouLanable  ikl in dunk)
{
  if(ikl is Student)
  {
    ikl. KouLan();
  }
  
else if(ikl is NBAPlayer)
  {
     ikl. KouLan();
  }
else
  {
    Console.WriteLine("怎么会出问题呢");
  }
}
这个时候  我们看到通过声明一个接口变量,并调用KouLan()方法,我们不需要关心他指向的是哪个方法,我们只需要调用就可以了,而且以后一旦我加了一个韩国人或者其他的什么人,他们也打篮球的话,我只需要修改一下数组,并在for循环里面增加一个else if就可以了 !
作者: 张松    时间: 2013-4-20 20:11
标题: RE: 接口问题
谢谢你,明白了!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2