Московский государственный университет имени М.В.Ломоносова
Опубликован: 03.10.2006 | Доступ: свободный | Студентов: 1225 / 79 | Длительность: 09:08:00
Специальности: Программист
Лекция 14:

Java: члены класса, статические переменые и методы

< Лекция 13 || Лекция 14: 1234

Передача параметров

Список формальных параметров содержит упорядоченные и разделенные запятой описания параметров (тип параметра и идентификатор параметра). Если метод не имеет параметров, передаваемых ему при вызове, то после имени метода указывается пара пустых скобок.

В языке Java все параметры передаются по значению. При передаче параметра ссылочного типа его значением является ссылка на объект, поэтому в метод передается ссылка на экземпляр класса.

Параметры в языке Java рассматриваются как локальные переменные метода, специфицированные вне тела метода. При вызове метода перед его выполнением происходит вычисление выражений, представляющих фактические передаваемые методу параметры, и присвоение вычисленных значений соответствующим локальным переменным (формальным параметрам).

Ссылка на текущий объект

При вызове метода экземпляра ключевое слово this

  • указывает ссылку на текущий объект. Это может быть использовано для передачи самого объекта в качестве аргумента методу самого экземпляра класса;
  • используется для указания квалифицированной ссылки на поля (переменные и методы) экземпляра класса.

Ключевое слово super используется для указания квалифицированной ссылки на поля (переменные и методы) суперкласса.

По умолчанию любой метод первоначально ссылается на свои собственные переменные и методы и только в случае их отсутствия выполняется поиск этих полей вверх по иерархии суперклассов. При этом, если метод не переопределяется, то его имя не обязательно квалифицировать.

Например:

class A {
    public int a;
}
class B extends A {
    public  int a, b;
    public void Metod1 ( ) {
        b=a;         // Ссылка на this.a
        b=super.a;            
    }
}

Имя суперкласса может быть использовано для квалифицированного доступа к статическим переменным или методам.

Переопределение метода

Переопределением метода называется объявление в подклассе метода, у которого имя, тип и список параметров, в точности совпадают с соответствующими атрибутами метода, ранее объявленного в суперклассе.

При переопределении метода использование модификаторов доступа должно удовлетворять следующим условиям:

  • если переопределяемый метод суперкласса не содержит ни одного из модификаторов доступа public, protected или private, то переопределяющий метод не должен иметь модификатора private.
  • если переопределяемый метод суперкласса имеет модификатор доступа protected, то переопределяющий метод должен иметь модификатор доступа public или protected.
  • если переопределяемый метод суперкласса имеет модификатор доступа public, то переопределяющий метод должен также иметь модификатор доступа public.

Тип возвращаемого значения переопределяющего метода должен совпадать или преобразовываться присвоением к типу возвращаемого значения переопределяемого метода.

Если класс содержит переопределяющий метод, то переопределенный метод можно вызвать только с квалификацией ссылки ключевым словом super или именем суперкласса (для статических членов).

Например:

class A  {
    public void Metod1() { } 
    public static void Metod2() { } 

 }
class B extends A {
public Metod1() {    }  
...
Metod1();       // Вызов метода из класса B
super.Metod1(); // Вызов метода из класса A
A.Metod2();
}

Перегружаемые методы

Перегружаемыми методами называется группа методов с одинаковым именем, но различными списками параметров. Язык Java позволяет определять в классах перегружаемые методы.

< Лекция 13 || Лекция 14: 1234