При использовании метода перегрузки вы вызываете «один и тот же метод», только с различными параметрами и/или иной продукции. Это упрощает создание методов с одинаковой функциональностью ядра, но с различными входными параметрами. Пример:
public int Sum(int a, int b) {
return a + b;
}
public double Sum (double a, double b) {
return a + b;
}
В противном случае вы бы такие методы, как SumInt (...) и SumDouble (...) и так далее. Вы также можете иметь 2 методы с тем же типом возвращаемого значения, но другой вход и по-прежнему использовать перегрузки для удобства:
public int Sum(int a, int b) {
return Sum(a, b, 0);
}
public int Sum (int a, int b, int c) {
return a + b + c;
}
Таким образом, у вас есть только один место с Аль логика и все другие методы просто позвонить один метод со всей логикой, только с разными параметрами. И тогда есть также перегрузка конструктора. Например, вы можете иметь пустой конструктор, в котором вы установили некоторые значения по умолчанию, и вы можете иметь конструктор, где можно задать значения самостоятельно:
//Without overloading you'll have to set the properties after instantiating the class
public MyClass() {
this.PropertyOne = "1";
this.PropertyTwo = 2;
}
//usage:
MyClass instance = new MyClass();
//now theproperties are already set to "1" and 2, wheter you like it or not
//here you change the values
instance.PropertyOne = "...";
instance.PropertyTwo = 0;
//With constructor overloading you have this
public MyClass() {
this("One", 2);
}
public MyClass(string propOne, int propTwo) {
this.PropertyOne = propOne;
this.PropertyTwo = propTwo;
}
//usage:
MyClass instance = new MyClass("MyValue", 1000);
//if you call MyClass() the default values STILL will be set :)
Второй способ дает вам больше возможностей, не? И это упрощает изменение кода. Надеюсь это поможет!
В чем вопрос? –
http://en.wikipedia.org/wiki/Function_overloading –
Вам нужно задать более точный вопрос - на данный момент он не отвечает. –