private/实现有多个相同方法的接口
当我们在一个类型中用完全限定接口名来定义一个接口方法时,该方法将被认为是私有方法,---只在该类型中(内部)可以调用,----而不能使用类型本身的引用来调用它。
----但是,当我们将该类型的引用转型为一个接口时,该接口中定义的方法将可以被调用,这时它(用完全限定接口名来定义的接口方法)又成为一个公有方法。---所以,当将gp变量转型为一个IWindow时,IWindow.GetMenu方法将是唯一可以调用的方法。
编译器按照先“完全限定接口成员”后“非完全限定接口成员”
----但是,当我们将该类型的引用转型为一个接口时,该接口中定义的方法将可以被调用,这时它(用完全限定接口名来定义的接口方法)又成为一个公有方法。---所以,当将gp变量转型为一个IWindow时,IWindow.GetMenu方法将是唯一可以调用的方法。
编译器按照先“完全限定接口成员”后“非完全限定接口成员”
using System;
using System.Collections.Generic;
using System.Text;
namespace App1
{
public interface IWindow
{
Object getMenu();
}
public interface IRestaurant
{
Object getMenu();
}
public class GiuseppePizzaria : IWindow, IRestaurant
{
IWindow Members
IRestaurant Members
public Object getMenu()//该类型自身的getMenu方法,与接口无关
{
Console.WriteLine("I'm GiuseppePizzaria's public method!");
return "";
}
}
class Program
{
static void Main(string[] args)
{
GiuseppePizzaria gp = new GiuseppePizzaria();
object menu;
//调用公有的getMenu方法.使用GiuseppePizzaria引用,
//完全限定接口方法将为私有方法,因此不可能被调用.
menu = gp.getMenu();
//调用IWindow的getMenu方法。使用IWindow引用,
//因此只有IWindow的getMenu()方法被调用。
menu = ((IWindow)gp).getMenu();
//调用IWindow的getMenu方法。使用IWindow引用,
//因此只有IWindow的getMenu()方法被调用。
menu = ((IRestaurant)gp).getMenu();
Console.Read();
}
}
}
using System.Collections.Generic;
using System.Text;
namespace App1
{
public interface IWindow
{
Object getMenu();
}
public interface IRestaurant
{
Object getMenu();
}
public class GiuseppePizzaria : IWindow, IRestaurant
{
IWindow Members
IRestaurant Members
public Object getMenu()//该类型自身的getMenu方法,与接口无关
{
Console.WriteLine("I'm GiuseppePizzaria's public method!");
return "";
}
}
class Program
{
static void Main(string[] args)
{
GiuseppePizzaria gp = new GiuseppePizzaria();
object menu;
//调用公有的getMenu方法.使用GiuseppePizzaria引用,
//完全限定接口方法将为私有方法,因此不可能被调用.
menu = gp.getMenu();
//调用IWindow的getMenu方法。使用IWindow引用,
//因此只有IWindow的getMenu()方法被调用。
menu = ((IWindow)gp).getMenu();
//调用IWindow的getMenu方法。使用IWindow引用,
//因此只有IWindow的getMenu()方法被调用。
menu = ((IRestaurant)gp).getMenu();
Console.Read();
}
}
}