Курс Java — Интерфейсы. Абстрактные методы и абстрактные классы. Статические члены класса.

Август 3, 2011

Продолжаю серию заметок про язык Джава и его синтаксические особенности в применении и реализации:

Интерфейс позволяет описать функциональность абстрактно без реализации. Он определяет новый тип данных, значениями кото-рого являются объекты классов, реализующих этот интерфейс.
Интерфейсы описываются конструкцией interface, в теле которых указываются заголовки методов без реализации. Там же можно указывать и некоторые константы.
interface I {
   int i;
   void m(); }
Все поля интерфейса считаются константами, даже если явно как константы они не описаны. Всё описанное в интерфейсе счи-тается публично доступным.
Реализация интерфейса классом указывается ключевым словом implements.
class A implements I {
   void m(){…}
   … }
Константы реализуемого интерфейса доступны в методах класса без квалификации. Объекты этого класса могут присваиваться переменными интерфейсного типа: I i =new A();
В этом случае можно вызывать только те методы, которые являются частью интерфейса. Вызов метода, определённого в классе в дополнение к методам реального интерфейса требует преобразования типа
A a=(A)i; a.n();
Класс, реализующий интерфейс не полностью, называется абст-рактным: abstract class A implements L{}
Абстрактным также должен быть объявлен любой класс, содер-жащий хотя бы 1 абстрактный метод(метод без реализации)
abstract class A
{abstract void m();}
Абстрактные методы Java – это прямой аналог чистых виртуальных функций C++. Объект абстрактного класса создать нельзя, но можно объявить переменную соответствующего типа. Значением такой переменной м.б. только объект необх-го подкласса.
Статич. поля и методы описываются с помощью модификатора  static. Их особенность состоит в том, что использовать их можно без создания объекта класса, при этом в качестве квалификатора при обращении используют не имя объекта, а имя класса:
int i = integer.parseInt(“5”);
Специфика статических полей состоит в том, что они не связаны ни    с каким объектом класса. Статические поля разделяются всеми объектами класса и, если 1 из них модифицирует статическое поле, то это изменение доступно всем объектам этого класса. К публичным статическим полям можно обращаться без создания объекта.
Специфика статических методов состоит в том, что они вызываются не на объекте, поэтому указатель  на текущий объект в качестве неявного параметра таким методам не передаются. А это означает, что статический метод не может обращаться к не статическим полям, и не может вызывать не статические методы этого же класса.
class A
{ void m();{. .}
  static void n(){m();//ошибка
}…  }
Актуальность статических членов класса диктуется отсутствием в Java понятия модуля. В этом смысле статические поля эквивалентны глобальным переменным модуля, а статические методы эквивалентны процедурам и функциям модуля. Роль модуля выполняет класс.

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