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;这里调用的是接口中的属性,还是类中的属性?
         }

解决方案 »

  1.   

    建议lz调试,把对象b 作为参数,应该是book实现ibook吧……
      

  2.   


    这里的ib代表任何一个实现了IBook接口的对象!
     这个方法加上static 修饰,即属于静态方法/类的方法,也就是不用实例化一个对象即可调用的方法,这个方法中仅仅返回一个接口中声明的一个属性而已,至于具体返回的什么,和具体的实现有关,在这里也就是一个多态的特征体现!