您的位置:首页 > 编程语言 > C#

C#接口隐式实现和显式实现的学习心得

2011-02-24 22:46 465 查看
下面是一个实现接口的例子:

    /// <summary>
    /// 接口
    /// </summary>
    public interface IBankAccount
    {
        //方法
        void displayBalance();
        void payIn(decimal amount);
        //属性
        decimal Balance
        {
            get;
        }
    }

    /// <summary>
    /// 隐式实现IBankAccount接口
    /// </summary>
    public class ImplicitAccount : IBankAccount
    {
        private decimal balance;

        public void displayClassName()
        {
            Console.WriteLine("ImplicitAccount");
        }

        public void displayBalance()
        {
            Console.WriteLine("Balance:{0}", balance);
        }

        public void payIn(decimal amount)
        {
            balance += amount;
        }

        public decimal Balance
        {
            get { return balance; }
        }
    }

    /// <summary>
    /// 显式实现IBankAccount接口
    /// </summary>
    public class ExplicitAccount : IBankAccount
    {
        private decimal balance;

        public void displayClassName()
        {
            Console.WriteLine("ExplicitAccount");
        }

        void IBankAccount.displayBalance()
        {
            Console.WriteLine("Balance:{0}", balance);
        }

        void IBankAccount.payIn(decimal amount)
        {
            balance += amount;
        }

        decimal IBankAccount.Balance
        {
            get { return balance; }
        }
    }
    public class Test
    {
        public static void Main()
        {
            ImplicitAccount imAccount = new ImplicitAccount();
            imAccount.displayClassName();
            imAccount.payIn(100);
            imAccount.displayBalance();

            ExplicitAccount exAccount = new ExplicitAccount();
            exAccount.displayClassName();
            //显式实现的接口只能访问接口的方法
            //exAccount.payIn(100); //Error 不能访问
            //exAccount.displayBalance(); //Error  不能访问

            IBankAccount acctoun = new ExplicitAccount();
            //acctoun.displayClassName();  //Error 不能访问
            acctoun.payIn(100);
            acctoun.displayBalance();

            Console.ReadKey();
        }
    }

 

结论:隐示实现,接口和实现类都可以访问 显示实现只有接口可以访问s
显示实现益处

1:隐藏代码的实现

2:显示实现接口的系统中,调用者只能通过接口调用而不是底层的类来访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# class interface