CLASS與INTERFACE的應用實例(二)


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            ClassA obj = new ClassA();
            obj.Print1();
            obj.Print2();
            obj.Print3();

            Interface_2 obj2 = new ClassA();
            obj2.Print();

            Interface_3 obj3 = new ClassA();
            obj3.Print();

            Console.Read();
        }
    }
    public interface Interface_1
    {
        void Print1();
    }
    public interface Interface_2 : Interface_1
    {
        void Print2();

        void Print();
    }
    public interface Interface_3
    {
        void Print3();

        void Print();
    }
    public class ClassA : Interface_2, Interface_3
    {
        #region Non-Explicit Interface
        /// <summary>
        /// *** 因為是 Non-Explicit 所以可以加上「public」的存取修飾詞,最好是什麼都不加  ***
        /// 因為 Interface_2 繼承 Interface_1,且 ClassA 又 Implement Interface_2,所以 ClassA 需要 Implement Interface_1和Interface_2的所有Function
        /// </summary>
        public void Print1()
        {
            Console.WriteLine("Interface_1的Function");
        }
        public void Print2()
        {
            Console.WriteLine("Interface_2的Function");
        }
        public void Print3()
        {
            Console.WriteLine("Interface_3的Function");
        }
        #endregion
        #region Explicit Interface
        /// <summary>
        /// *** 因為是 Explicit 所以不能加任何存取修飾詞  ***
        /// 因為 ClassA 同時 Implement Interface_2 和 Interface_3,且 Interface_2 和 Interface_3 剛好有相同名稱的 Function
        /// </summary>
        ///
        void Interface_2.Print()
        {
            Console.WriteLine("Interface_2的 Print Function");
        }
        void Interface_3.Print()
        {
            Console.WriteLine("Interface_3的 Print Function");
        }
        #endregion
    }
}

results matching ""

    No results matching ""