Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »Информатика

Программирование на Java

Тип: контрольная работа
Категория: Информатика
Скачать
Купить
Контрольная работаПрограммирование на Java (теория)СОДЕРЖАНИЕ1. Динамическая инициализация объектов2. Чтение и запись файлов1. Динамическая инициализация объектовОбъекты в Java создаются с помощью зарезервированного слова new, после которого идет конструктор – специальная подпрограмма, занимающаяся созданием объекта и инициализацией полей создаваемого объекта. Для него не указывается тип возвращаемого значения, и он не является ни методом объекта (вызывается через имя класса когда объекта еще нет), ни методом класса (в конструкторе доступен объект и его поля через ссылку this). На самом деле конструктор в сочетании с оператором new возвращает ссылку на создаваемый объект и может считаться особым видом методов, соединяющим в себе черты методов класса и методов объекта.Если в объекте при создании не нужна никакая дополнительная инициализация, можно использовать конструктор, который по умолчанию присутствует для каждого класса. Это имя класса, после которого ставятся пустые круглые скобки – без списка параметров. Такой конструктор при разработке класса задавать не надо, он присутствует автоматически. Если требуется инициализация, обычно применяют конструкторы со списком параметров.Порядок вызовов при создании объекта некого класса (будем называть его дочерним классом):
  • Создается объект, в котором все поля данных имеют значения по умолчанию (нули на двоичном уровне представления).
  • Вызывается конструктор дочернего класса.
  • Конструктор дочернего класса вызывает конструктор родителя (непосредственного прародителя), а также по цепочке все прародительские конструкторы и инициализации полей, заданных в этих классах, вплоть до класса Object.
  • Проводится инициализация полей родительской части объекта значениями, заданными в декларации родительского класса.
  • Выполняется тело конструктора родительского класса.
  • Проводится инициализация полей дочерней части объекта значениями, заданными в декларации дочернего класса.
  • Выполняется тело конструктора дочернего класса.
  • Знание данного порядка важно в случаях, когда в конструкторе вызываются какие-либо методы объекта, и надо быть уверенным, что к моменту вызова этих методов объект получит правильные значения полей данных.Как правило, для инициализации полей сложно устроенных объектов используют конструкторы. Но кроме них в Java, в отличие от большинства других языков программирования, для этих целей могут также служить блоки инициализации класса и блоки инициализации объекта. Синтаксис задания классов с блоками инициализации следующий:Модификаторы class ИмяКласса extends ИмяРодителя {Задание полей;static {тело блока инициализации класса}{тело блока инициализации объекта}Задание подпрограмм - методов класса, методов объекта, конструкторов}Блоков инициализации класса и блоков инициализации объекта может быть несколько.Порядок выполнения операторов при наличии блоков инициализации главного класса приложения (содержащего метод main):
  • инициализация полей данных и выполнение блоков инициализации класса (в порядке записи в декларации класса);
  • метод main;
  • выполнение блоков инициализации объекта;
  • выполнение тела конструктора класса.
  • Для других классов порядок аналогичен, но без вызова метода main:
  • инициализация полей данных и выполнение блоков инициализации класса (в порядке записи в декларации класса);
  • выполнение блоков инициализации объекта;
  • выполнение тела конструктора класса.
  • Чем лучше пользоваться, блоками инициализации или конструкторами? Ответ, конечно, неоднозначен: в одних ситуациях – конструкторами, в других – блоками инициализации. Для придания начальных значений переменным класса в случаях, когда для этого требуются сложные алгоритмы, можно пользоваться только статическими блоками инициализации. Для инициализации полей объектов в общем случае лучше пользоваться конструкторами, но если необходимо выполнить какой-либо код инициализации до вызова унаследованного конструктора, можно воспользоваться блоком динамической инициализации.Приведем несколько примеров. Программа SmallSquares (маленькие квадраты) возвращает квадрат маленького целого числа. SmallSquares имеет две статические переменные и единственную открытую статическую функцию getSquare(). public class SmallSquares {private static final int LIMIT = 10;private static final int[] square = new int[LIMIT];public SmallSquares() { for (int i = 0; i < LIMIT; i++) {square[i] = i * i;}}}public static int getSquare(int i) {return square[i];}
    Другие файлы:

    Java. Эффективное программирование. 2-е издание
    Второе издание знаменитой книги "Java. Эффективное программирование", содержащее семьдесят восемь правил, предлагает решение задач программирования, с...

    Java 2. Библиотека профессионала. Том 1. Основы 2-е. издание
    Книга ведущих специалистов по программированию на языке Java представляет собой обновленное издание фундаментального труда, учитывающее всю специфику...

    Объектно-ориентированное программирование в Java
    Методология объектно-ориентированного программирования в Java. Понятия класса, объекта и объектной переменной. Динамическая и статическая объектные мо...

    The Java Class Libraries. Volume 1
    The Java Class Libraries.Second edition.Patrick Chan,Rosanna Lee,Douglas Kramer.Java.io.Java.lang.Java.math.Java.net.Java.text.Java.util....

    Java Programming on Linux
    Java Programming on Linux is a detailed how-to book on using Java on a Linux operating system. Topics include installing and enabling a Java runtime e...