Московский государственный университет имени М.В.Ломоносова
Опубликован: 01.11.2004 | Доступ: свободный | Студентов: 10559 / 333 | Оценка: 4.12 / 4.01 | Длительность: 19:18:00
ISBN: 978-5-9556-0077-9
Специальности: Программист
Лекция 14:

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

< Лекция 13 || Лекция 14: 1234 || Лекция 15 >
Аннотация: В лекции вводится понятие членов класса, описывается использование статических переменных и переменных экземпляра. Рассматривается синтаксис переопределения метода и использование перегружаемых методов. Изучается механизм передачи параметров в языке Java.

Объявление переменных и методов класса

Объявление переменных

В языке Java при объявлении переменной - указании ее типа и имени - одновременно можно выполнить ее инициализацию.

Для переменной могут быть указаны следующие модификаторы доступа:

  • public или protected, или private, - определяющие область видимости переменной;
  • static - указывает, что переменная является переменной класса, а не переменной экземпляра класса;
  • final - запрещает присвоение значений переменной вне тела класса, в котором она объявлена;
  • transient - указывает, что переменная не является частью постоянного состояния объекта;
  • volatile - определяет возможность асинхронного изменения переменной.

Переменная, не имеющая модификатора static, называется переменной экземпляра. Переменная экземпляра создается для каждого нового экземпляра класса.

Переменная, имеющая модификатор static, называется переменной класса. Для всех экземпляров класса существует только одна переменная класса. Эта переменная доступна и до создания экземпляра класса.

Переменная, имеющая модификатор final, должна быть инициализирована внутри тела класса, так как вне тела класса final -переменная является константой и ее изменение или инициализация запрещены.

Модификатор transient нельзя использовать совместно с модификаторами final или static.

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

Для этих модификаторов определены следующие правила доступа:

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

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

Инициализация переменной означает присвоение этой переменной некоторого значения. В качестве значения инициализации могут выступать:

  • выражение;
  • массив, указываемый в фигурных скобках.

Если переменная объявлена с модификатором static, то инициализация выполнятся сразу при загрузке класса.

Если объявляемая переменная является переменной экземпляра, то инициализация выполняется при выполнении метода-конструктора класса.

Если объявляемая переменная является локальной переменной, то ее инициализация происходит при выполнении оператора объявления этой переменной.

Например:

int i1,i2;
float f1 = 3.0;
float dArray1 [] = new float [14];
java.lang.String str1 = "no?iea"; 
Object oObj = str1 ; 
Exception e = new Exception ( ) ;
< Лекция 13 || Лекция 14: 1234 || Лекция 15 >
Александр Демьяненко
Александр Демьяненко

Можно ли сдавать один и тот же тест несколько раз?
Или же один и тот же тест можно сдать лишь однажды?

Максим Стогний
Максим Стогний

Добрый день!

Скажите, пожалуйста, если в терминологии объектно-ориентированного программирования функции также называются методами или методами - членами класса, в примере объявления указателя на метод использовали в формальном описании оба названия:

тип_метода (имя_класса::*имя_метода_указателя)
    (список параметров);
тип_функции (*имя_ функции_указателя)
    (список параметров);

при этом можно было  тип_функции во втором описании заменить на тип_метода? Т.е.:

тип_метода (*имя_ метода_указателя)
    (список параметров);

Евгений Шаров
Евгений Шаров
Россия, Североморск, школа№11, 1991
Ирина Солодченко
Ирина Солодченко
Россия, г. Гуково