重载和重写

     学UML时就开始接触面向对象思想,为什么要学习面向对象呢?因为它像活字印刷术一样,具有可维护、可复用、可扩展、灵活性好等几大优点。

    说到面向对象,不得不提到重载和重写。它俩很相似,以致很长一段时间都不能区分它们。昨晚,经过自己的挑灯夜战,终于对它两有了一个进一步了解,在此把心得和大家分享一下。

    先说重载,重载要求两个方法名必须相同,但参数类型或个数必须有所不同。这么说有点抽象,举个例子吧。我们建立一个“猫”的类,在这个类中构建两个方法,一个是带参数姓名的方法,一个是不带参数姓名的方法:

Public Cat(string name)
{
	this.name=name;
}
Public Cat()
{
	this.name="无名";
}

            这样,当我们初始化一个“猫”的对象时,就可以根据自己需要,给对象起名或者不起名,达到扩展性功能。

    再说重写,重写一般和多态联系在一起。它要求方法名、参数列表返回值类型必须相同,还是用例子来说明问题吧!

    比如动物都有“叫”的方法,猫和狗都是它的子类,猫的叫声是“喵”,狗的叫声是“旺”。面对这种问题怎么实现呢,首先我们在动物类中构建一个虚方法:

Class Animal
{
	Public virtual string Shout()
	{
		return "";
        }
}

   在构建猫类时我们重写“叫”这个方法

Class Cat:Animal
{
	Public override string Shout()
       {
	   String result="喵";
           return result;
        }
}

   在构建狗类方法时,我们也重写“叫”这个方法

Class Dog:Animal
{	
       Public override string Shout()
       {
	   String result="旺";
           return result;
        }
}

            这个我们就实现了面对同一方法,不同对象产生不同的效果,实现了多态的功能。

    重载一个发生在一个类中,重写一个发生在父类和子类之间,声明的是父类,实例化的是子类,既儿子以父亲的身份出现,在工作时以儿子的方法完成父亲的任务。

你可能感兴趣的:(重载和重写)