none
接口问题 RRS feed

  • 问题

  •      public interface IBook
        {
            string BookName { get;set;}
        }

        public class Book : IBook
        {
            string bookname;

            public Book(string bn)
            {
                bookname = bn;
            } 
                 
            public string BookName
            {
                get { return bookname; }
                set
                {
                    bookname = value;
                }
            } 
          Book b = new Book("aaa");
            b.BookName = "bbb";
          label1.Text = GetS(b);

            private static string GetS(IBook ib)这里的ib代表了什么,为什么可以把对象b 作为参数传给他?详细讲一下啊
            {
              return ib.BookName;这里调用的是接口中的属性,还是类中的属性?
            }
    2009年11月21日 2:52

答案

  • 你好!
         你存在这些疑问,主要是因为对接口的概念不太了解!
         你可以这样理解:
          接口就是一个“规范”,里面规定了实现这个接口的类必须提供一些方法 属性的具体实现,但是本身不提供这些方法和属性的具体实现,只是要求实现类必须有这些方法的具体实现!
         一个类实现了这个接口,也就符合了这个“规范”,所以这个类的实例b也符合了IBook类型的参数的要求!
    周雪峰
    • 已标记为答案 pesistence 2009年11月21日 11:16
    2009年11月21日 10:16
    版主

全部回复

  • Book 实现了 IBook ,也可以说  Book 就是 IBook。 形式上跟基类与派生类的关系一样。

    接口仅是一份合约,没有任何实现的。里面所有的功能都是由实现它的类包办的。
    2009年11月21日 8:58
  • 你好!
         你存在这些疑问,主要是因为对接口的概念不太了解!
         你可以这样理解:
          接口就是一个“规范”,里面规定了实现这个接口的类必须提供一些方法 属性的具体实现,但是本身不提供这些方法和属性的具体实现,只是要求实现类必须有这些方法的具体实现!
         一个类实现了这个接口,也就符合了这个“规范”,所以这个类的实例b也符合了IBook类型的参数的要求!
    周雪峰
    • 已标记为答案 pesistence 2009年11月21日 11:16
    2009年11月21日 10:16
    版主