简单的C#问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 19:39:27
重载和重写有什么区别?举例说明.特别是重载是什么样子的

重载:
Class 1
{
protected double sum(double a,double b)
{}
protected int sum(int a,int b)
{}
protected void sum()
{}
}
上面这个类里有三个同名的方法,但是他们的参数个数,类型,返回值都不同,当实例化这个类后,调用这个sum方法,传不同的参数也会实现不同的功能.
重写
Class 1
{
protected virtual void sum()
{}
}
Class 2 : Class1
{
protected override void sum()
{
int num=1+2;
}
}
看上面两个类,Class1为父类,里面有一个虚方法sum,但是里面没有具体对该方法的代码.Class2为Class1的子类,通过override关键子重写该方法,使其实现某中功能.
要注意的是父类中只有virtual(虚方法)和abstract(抽象方法)关键字修饰的方法才可以被重写,重写的方法不能改变父类方法的函数签名,即参数个数,类型,返回值.

重载是同名方法可以接收不同类型、个数或者返回不同类型的值,方法的重载在一个类中实现

方法重写是要有继承关系的,子类继承了父类的方法,但是这个方法可以与父类的同名方法完全不一样

总的来说,区别就是一个不存在继承关系,一个存在继承关系

重载是在同一类中,相同名字,不同参数的方法

重写是子类继承父类时,覆盖父类某方法的实现