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
}
}