A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张松 中级黑马   /  2013-4-17 21:33  /  1313 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张松 于 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函数中声明并且使用不就行了么?接口没感觉到方便啊?

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

正序浏览

RE: 接口问题

谢谢你,明白了!!
回复 使用道具 举报
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就可以了 !

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
接口的实现首先解决了C#中单继承的问题,可以同时实现多个接口。
接口是对外部暴露的一些原则,是程序的功能扩展。举个例子吧?
就好比你 笔记本电脑就是一个应用程序,USB接口就相当于我们程序中的接口,就是电脑生产厂商和一些其它厂商量定义好的一些接口。
只要你按照这些规则生产的一些U盘,什么USB接口的鼠标....都可以用是吧!这样就可以提高程序的扩展性。
假如没有接口:
你把笔记本电脑全部封装,那么你想扩展一下硬盘容量。。。。那你是不是得另外买电脑

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
接口可用来实现多重继承,java中多重继承,定义类时,只可有一个父类。
但是每个类可以实现多个接口,以这种方式来实现多重继承。
当然你上面代码就说了一个学生,感觉没什么。
如果你还有工人,教师等等,都有需要吃饭这个动作吧?
这时候你总不可能在main函数里面写吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马