写代码也学了快2年了,今天来跟大家谈谈一些基础的原理性的东西:接口
往往在新手看来,接口是没有卵用的东西,但是接口真的太强大了。边上代码边解释
public interface IPerson {
void Tell(string name);
void Study();
void Sleep();
}
我们定义了一个人的接口,可以有tell方法,study方法,Sleep方法
然后我们分别以两个类来实现这个接口:
男人类:
public class Male:IPerson
{
public void Sleep()
{
Console.WriteLine("我喜欢在大床上睡");
}
public void Study()
{
Console.WriteLine("我喜欢在图书馆学习");
}
public void Tell(string name)
{
Console.WriteLine("大家好,我叫" + name + "!");
}
}
女人类:
public class Female : IPerson
{
public void Sleep()
{
Console.WriteLine("我喜欢睡觉,睡觉可以保持年轻不老");
}
public void Study()
{
Console.WriteLine("我喜欢在寝室学习,寝室比较安静!");
}
public void Tell(string name)
{
Console.WriteLine("你好啊," + name + "!,很高兴见到你");
}
}
定义一个辅助类:
public class Live {
public IPerson person { private get; set; }
public Live(IPerson person) {
this.person = person;
}
public void HappyStudy()
{
person.Study();
}
}
这个辅助类构造函数接受一个IPerson的接口类型。
方法调用:
class Program
{
static void Main(string[] args)
{
Live person1 = new Live(new Male());
person1.HappyStudy();//调用方法
person1.person = new Female();
Console.WriteLine("\r\n");
person1.HappyStudy();//调用同一个方法,但是实现的功能已经截然不同了。
Console.ReadKey();
}
}
根据多态的原则,我们可以直接new一个子类作为构造函数的参数(我是这样理解这里的多态的,你要一个人是不是?我给你一个女人它是不是人?),所以我们可以实现特定的功能,但是后来我们的需求变了,我们可以直接给一个实现了IPerson接口的新的类,就可以实现功能的变更,大家觉得这样是不是很方便。
本人才疏学浅,如果错误,敬请指出。