zoukankan      html  css  js  c++  java
  • C#接口的隐式和显示调用,区别和实例

    把代码打一边,然后看注释会明白很多。(新手用)

    namespace MyInface
    {
        //显示接口就是只能用接口调用。
        //隐式接口和类都能调用。
       
        public interface IBookList
        {
            void Add(string BookName);
            void Append(string BookName);
            void Remove(int position);
            int Count { get;}
            string this[int index] { get;set;}
        }
        //隐式调用
        public class BookList : IBookList
        {
            private List<string> booklist = new List<string>();
            #region IBookList 成员
            public void Add(string BookName)
            {
                booklist.Add(BookName);
            }
            public void Append(string BookName)
            {
                booklist.Insert(booklist.Count, BookName);
            }
            public void Remove(int position)
            {
                booklist.RemoveAt(position);
            }
            public int Count
            {
                get
                {
                    return booklist.Count;
                }
            }
            public string this[int index]
            {
                get
                {
                    return booklist[index];
                }
                set
                {
                    booklist[index] = value;
                }
            }
            #endregion
        }
        //显示调用   该类只能用接口调用。
        public class BookList2 : IBookList
        {
            private List<string> booklist = new List<string>();
            #region IBookList 成员
            void IBookList.Add(string BookName)
            {
                booklist.Add(BookName);
            }
            void IBookList.Append(string BookName)
            {
                booklist.Insert(booklist.Count, BookName);
            }
            void IBookList.Remove(int position)
            {
                booklist.Remove(position.ToString());
            }
            int IBookList.Count
            {
                get
                {
                    return booklist.Count;
                }
            }
            string IBookList.this[int index]
            {
                get
                {
                    return booklist[index];
                }
                set
                {
                     booklist[index] = value;
                }
            }
            #endregion
        }

        class text
        {
            static void Main()
            {
                //隐式调用。
                BookList bklist = new BookList();
                bklist.Add("¥¥¥隐式");
                Console.Write("实现隐式接口的例子:使用类:{0}", bklist[0]);
                IBookList ibklist = (IBookList)bklist;    //转变类型后,接连联内容也一同赋值给过来了。
                ibklist.Add("$$$$$隐式");// 这里索引是第二个了。
                Console.Write("实现隐式接口的例子:使用接口{0}", ibklist[1]);
              
               
                //显示调用   只能用接口调用。
                BookList2 bklist2 = new BookList2();
                //如果直接bklist2.Add("显示");这样就出错。如:
                //只能如下:
                IBookList Ibk = (IBookList)bklist2;
                Ibk.Add("$$$$显示接口");        //用接口增加
                Console.Write("实现显示接口的例子:使用接口{0} ", Ibk[0]);//用接口调用。
                Console.ReadLine();
            }
        }
    }


    你问我生命中还有什么可追寻?

  • 相关阅读:
    java中创建线程的方式
    idea查看一个接口的子接口或实现类的快捷键
    idea查看源码没有注释的问题
    spring中的Aop
    spring中的ApplicationListener监听器
    spring中的事务管理
    IDEA创建springboot 项目
    xiaopiu产品设计
    java 6大设计原则 一:观察者模式
    java面向对象
  • 原文地址:https://www.cnblogs.com/avril/p/1544227.html
Copyright © 2011-2022 走看看