3.4 Перегрузка метода
Метод - это не что иное, как набор выполняемых инструкций. Методы также определяют интерфейс данных объекта. Ещё они помогают обеспечивать структурный подход к программированию. Программа может быть разделена на различные методы, которые является только логической группировкой связанных выполняемых инструкций. Методы помогают при отладке программы, поскольку отладчик может непосредственно перейти к специфическому методу и сделать необходимые исправления. Если программа размером в 1 КБ не содержит ни одного метода, то отладить такую программу будет достаточно трудно.
Обратите внимание: Методы также называются функциями.
Преимущества методов:
Методы обеспечивают доступ к данным класса. Никто не может непосредственно обращаться к данным объекта. К данным можно обратиться только через методы.
Программа может быть разделена логически.
Нет никакой потребности повторять один и тот же набор инструкций снова и снова. Можно объявить отдельный метод, который будет вызываться когда потребуется.
Программы становятся легко отлаживаемыми.
Есть два типа методов, а именно перегруженные методы и переопределённые методы.
Перегруженные методы - это методы, которые находятся в том же самом классе и имеют то же самое имя, но различные списки параметров. Переопределённые методы - это методы, которые находятся в суперклассе так же как и в подклассе.
Полиморфизм - свойство использования одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных.
Следующая программа демонстрирует перезагруженные методы.
Пример 5:
class Calculation
{
public void add( int a, int b)
{
int с = a + b;
System.out.println( Addition of two integers is + c);
}
public void add( float a, float b)
{
float с = a + b;
System.out.println( Addition of two floating point numbers is +c);
}
public void add( String a, String b)
{
String с = a + b;
System.out.println( Addition of two strings is + c);
}
}
class CalculationDemo
{
public static void main(String args[])
{
Calculation с = new Calculation();
с add(10,20) ;
c.add(40.0F, 35.65F);
с.add( Good , Morning );
}
}
Вывод вышеупомянутой программы:
Рисунок 3.8: Вывод
В вышеупомянутой программе
add () - перегруженный метод. Есть три метода с одним и тем же названием,
add (), но они имеют различные параметры. Когда мы делаем запрос с помощью метода
add (), то в зависимости от переданных параметров, то есть int или float или string вызывается соответствующий метод.
Обратите внимание: Перегруженные методы постоянно находятся в одном классе. Они имеют одну и ту же область видимости с классом.
Построение и инициализация объекта
Объект - образец класса. Используйте следующий синтаксис, чтобы создать объект:
'new' constructor
Ключевое слово new, часто называемое
оператором создания, распределяет память объекта и инициализирует эту память значениям по умолчанию. Полевые значения объекта сохраняются в памяти. Оператору new требуется операнд: конструктор, который является названием специального метода, создающего объект. Чтобы исполнить объектную инициализацию, конструктор распределяет и инициализирует память.
3.4.1 Функция - конструктор
Конструктор - специальный метод, который не имеет возвращаемого значения и имеет то же самое название, что и класс. Это означает, что конструктор может использоваться или функционировать как нормальный метод, но он не будет возвращать никакого значения. Конструктор определен на каждый класс, чтобы инициализировать его поля. В Примере 2, мы применили метод setProperties (), чтобы инициализировать поля класса Fruit. Теперь мы можем подумать, почему же мы нуждаемся в специальном методе конструктора для инициализации полей, когда мы можем достигнуть этого, объявляя метод подобно setProperties (). Причина -методы подобно setProperties () нуждаются в явном вызове с объектом. А метод конструктора класса вызывается автоматически, когда мы создаем объект данного класса. Мы также можем передавать значения методу конструктора. Так что метод конструктора создает объект, инициализируя поля и создавая среду для объекта. Если мы программируем окна, то есть создаем рамку или диалоговые окна, то метод конструктора используется, чтобы установить размер, передний план, цвет фона и видимость рамки или диалогового окна. Это только создает среду для этого объекта.
В Примере 2, нет никакого метода конструктора. Теперь мы изменяем класс Fruit примера 2, применяя конструктор, и мы также изменяем класс FruitDemo, чтобы увидеть, как работает конструктор.
Пример 6:
class Fruit
{
boolean seedLess;
boolean seasonal;
float price;
Fruit(boolean seed, boolean season, float p)
{ //constructor
seedLess = seed;
seasonal = season;
price = p;
}
void printProperties()
{
System.out.println( Following are properties of Fruit );
if(seedLess)
System.out.println( Fruit is seedless );
else
System.out.println( Fruit is seeded );
if(seasonal)
System.out.println( Fruit is seasonal );
else
System.out.println( Fruit is not seasonal );
System.out.println( Price is +price);
}
}
class FruitDemo
{
public static void main(String args [])
{
Fruit f = new Fruit(true,false,50.0F);
f.printProperties() ;
}
}
Вывод вышеупомянутого кода показан ниже:
Рисунок 3.9: Вывод
В вышеупомянутом коде мы заменили метод setProperties () методом конструктора. Обратите внимание, что метод конструктора имеет то же название что и класс
Fruit. В классе Fruit, конструктор присваивает значения полям. Теперь обратите внимание, что в классе FruitDemo, мы передали значения во время создания объекта. Так передаются значения только через конструктор. Метод конструктора класса Fruit вызывается с параметрами, определяемыми пользователем метода конструктора. В таком случае заданный по умолчанию конструктор не вызывают. Это устраняет потребность в отдельном методе и уменьшает плохую производительность компилятора.