Распределенные системы обработки информации
[methods]
public static void main(String[] args) { … }
}
public – класс виден всем остальным классам (если не указан, класс виден только в своем пакете), final – от класса нельзя породить потомков, abstract – нельзя создать экземпляр класса. Функция main не обязательна, это точка входа в программу.
Классы организуются в пакеты (аналог пространств имен). В одном файле может быт
ь только один public-класс.
Создание объекта:
new ClassName(параметры конструктора). Возвращает ссылку на объект.
Класс может содержать объявления конструкторов:
public ClassName(параметры .) { . }
Если ни один конструктор не определен, неявно определяется конструктор без параметров, которые устанавливает все поля в значения по умолчанию (числа – в нуль, логические – в ложь, ссылки – в null).
В первой строке конструктора можно вызвать другой конструктор:
public MyClass(String a) { … }
public MyClass() { this(“default”); … }
Определение методов:
{public|private|protected} {тип возвр. значения | void} ИмяМетода(параметры метода) { тело метода }
public – метод доступен всем классам, private – только данному классу, protected – только данному классу и его наследникам, без указания спецификатора – метод доступен в пределах пакета.
Определение поля:
{public|private|protected} тип имя [= значение];
Инициализационный блок используется для установки начальных значений:
[static] { операторы присваивания . }
Статический инициализационный блок может инициализировать только статические переменные.
Порядок инициализации объекта:
1. Все поля инициализируются значениями по умолчанию.
2. Срабатывают инициализаторы полей и инициализационные блоки в порядке их следования в коде.
3. Если в первой строке конструктора вызывается другой конструктор, он выполняется.
4. Выполняется конструктор.
5. В классе можно определить метод finalize(), который будет выполняться при сборке мусора.
1.5 Переменные, именованные константы, массивы, перечисления в Java
Переменные – простых типов и ссылочные. Простые непосредственно содержат значение, ссылочные – ссылку на объект. Ссылочным переменным можно присвоить null.
Простые типы: int, short, long, byte, float, double, char, boolean. Беззнаковых типов нет. Размерность типов не зависит от платформы. Char всегда 2 байта.
Для простых типов есть их объектные аналоги: Integer, Character и т.п.
Константы обозначаются ключевым словом final (например, final double MAX = 5; - требуется явная инициализация при объявлении).
Массив – объект, содержащий ссылки на другие объекты.
MyType[] array = new MyType[5];
array[3] = new MyType();
int size = array.length; // 5
int[] iarr = { 1, 2, 3 };
Изначально всем элементам массива присваиваются значения по умолчанию.
Класс java.util.Arrays содержит статические методы для работы с массивами: сравнение, сортировка, поиск и т.п.
Перечисление – тип объекта, который может принимать ограниченное множество значений. Раньше для этого использовались классы, унаследованные от интерфейса Enumeration (методы hasMoreElements() и nextElement()). В Java 5 появился enum, как в C++.
public enum MyEnum { FIRST, SECOND, THIRD };
Enum – это полноценный класс, его значения – экземпляры класса. Каждому значению можно сопоставить параметры конструктора:
public enum MyEnum {
FIRST(“first”), SECOND(“second”), THIRD(“third”);
MyEnum(String arg) {
text = arg;
}
String getText() { return text; }
private String text;
}
Можно перебрать все значения enum в цикле for:
for (MyEnum m : MyEnum.values())
doSomething(m);
1.6 Наследование и о классе Class
Наследование:
class DerivedClass extends BaseClass {…}
Можно наследовать только один класс (нет множественного наследования), зато можно реализовывать несколько интерфейсов. Для обращения к полям и методам суперкласса в методе дочернего класс используется super. Также можно вызывать конструктор базового класса в конструкторе дочернего:
public DerivedClass() {
super(param1, param2);
…
}
Для переопределения метода достаточно еще раз описать его в дочернем классе, все методы подвержены полиморфизму (нет необходимости объявлять их виртуальными). Чтобы метод нельзя было переопределить, используется модификатор final. Также можно объявить final класс, тогда от него нельзя будет унаследовать другие классы.
Если объявить класс abstract, то нельзя создать его экземпляр, только унаследовать. Метод тоже может быть abstract – в этом случае его тело определяется не в этом классе, а в дочерних.
Дочерним классам доступны поля и методы уровня public и protected.
a instanceof B – возвращает true, если a – экземпляр класса B, в противном случае false.
Если наследуемый класс не указывается явно, то неявным базовым классом становится Object. Таким образом, каждый класс унаследован (возможно, косвенно) от Object. Переменную типа Object можно использовать как ссылку на любой объект. Простые типы не наследуются от Object. Object содержит ряд важных методов:
equals() – проверяет эквивалентность двух объектов. Изначально проверяет только равенство ссылок, поэтому должен переопределяться в дочерних классах.
getClass() – возвращает объект типа Class, описывающий тип данного объекта.
hashCode() – генерирует целое число на основе состояния конкретного объекта. Метод используется при включении объекта в хэш-таблицу. При переопределении equals() надо переопределять и hashCode() – у эквивалентных объектов хэш-коды должны совпадать.
toString() – возвращает строку, отражающую состояние объекта.
clone() – создает копию объекта. Без переопределения недоступен.
Class:
Обьект метаданных о каком либо классе. Позволяет узнать методы, поля, создать экземпляр другого класса. Обьект Class создается либо как жертва.getClass() или как Class.forName(“полное квалификационное имя”). Данный класс – основа отражения (reflection).
1.7 Интерфейсы и обратные вызовы в Java
Интерфейс – спецификация требований к реализуемым классом методам:
public interface MyInterface {
int myMethod();
}
Все методы, объявленные в интерфейсе, считаются обьявлеными как public.
Класс может реализовать один или несколько интерфейсов:
class MyClass implements MyInterface { … }
class MyClass2 implements MyInterface, MyInterface2 { … }
Интерфейс – не класс, нельзя создать его экземпляр. Но интерфейсная переменная может ссылаться на объект класса, который реализует этот интерфейс. С помощью instanceof можно проверить, реализует ли объект заданный интерфейс.
В Java интерфейсы часто применяются вместо указателей на функции для организации механизма обратного вызова. Объекту, который будет выполнять обратный вызов, передается интерфейсная переменная, метод которой будет вызван. После этого первый объект сохраняет эту переменную и при необходимости вызывает один из ее методов. Например, таймер javax.swing.Timer требует интерфейс java.awt.event.ActionListener для периодического выполнения обратного вызова.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности