3.4 Перегрузка метода

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 вызывается с параметрами, определяемыми пользователем метода конструктора. В таком случае заданный по умолчанию конструктор не вызывают. Это устраняет потребность в отдельном методе и уменьшает плохую производительность компилятора.

назад к оглавлению вперед

Rus. Open Source company, г. Саратов
ул. Орджоникидзе, 156, офис 203
тел: 8 (8452) 57-84-41
e-mail: info@rus_opensource.com

Главная | Обзоры | О разном
Карта сайта

Учебная литература:

Введение в Linux
Основы JAVA
Архивы

© 2013 opensourcerules.net