Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

В наших примерах мы ни разу не рассматривали конструкторы классов, поэтому при создании экземпляров наших классов вызывался конструктор класса object.

Читайте также:
  1. ALIVEMAX Вебинар врача Бодарацкой Галины на тему Наше здоровье в наших руках
  2. D-эффект как результат настройки параметров градиентной сетки при ее создании
  3. Ex 21 Use either the Infinitive or Participle I of the verb in brackets as the second element of the complex object.
  4. II. ОРГАНИЗАЦИЯ И ФУНКЦИОНИРОВАНИЕ КЛАССОВ КОРРЕКЦИОННО-РАЗВИВАЮЩЕГО ОБУЧЕНИЯ
  5. Oтпустить наших рoдителей
  6. Амеияйте объедииеиие иерархией классов
  7. Базовая иерархия классов исключений
  8. Библиотеку классов Java API (Application Programming Interface).
  9. в 11 классах
  10. В 11 классах

Операция new

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

В первом случае в качестве операнда указывается тип элементов массива и количество его элементов в квадратных скобках, например:

double a[] = new double[100];

Во втором случае операндом служит конструктор класса. Если конструктора в классе нет, то вызывается конструктор по умолчанию.

Числовые поля класса получают нулевые значения, логические поля — значение false, ссылки — значение null.

Результатом операции new будет ссылка на созданный объект. Эта ссылка может быть присвоена переменной типа ссылка на данный тип:

Dog k9 = new Dog ();

Но может использоваться и непосредственно

New Dog().voice();

Здесь после создания безымянного объекта сразу выполняется его метод voice(). Такая странная запись встречается в программах, написанных на Java, на каждом шагу.

Статические члены класса

Разные экземпляры одного класса имеют совершенно независимые друг от друга поля-, принимающие разные значения. Изменение поля в одном экземпляре никак не влияет на то же поле в другом экземпляре. В каждом экземпляре для таких полей выделяется своя ячейка памяти. Поэтому такие поля называются переменными экземпляра класса (instance variables) или переменными объекта.

Иногда надо определить поле, общее для всего класса, изменение которого в одном экземпляре повлечет изменение того же поля во всех экземплярах. Например, мы хотим в классе Automobile отмечать порядковый заводской номер автомобиля. Такие поля называются переменными класса (class variables). Для переменных класса выделяется только одна ячейка памяти, общая для всех экземпляров. Переменные класса образуются в Java модификатором static. В листинге 2.3 мы записываем этот модификатор при определении переменной number.

Листинг 2.3. Статическая переменная

class Automobile {

Private static int number;

Automobile(){

number++;

System.out.println("From Automobile constructor:"+

" number = "+number);

}

}

public class AutomobiieTest{

public static void main(String[] args){

Automobile lada2105 = new Automobile(),

fordScorpio = new Automobile(),

oka = new Automobile!);

}

}

Получаем результат, показанный на рис. 2.2.

Рис. 2.2. Изменение статической переменной

Интересно, что к статическим переменным можно обращаться с именем класса, Automobile.number, а не только с именем экземпляра, lada2105.number, причем это можно делать, даже если не создан ни один экземпляр класса.

Для работы с такими статическими переменными обычно создаются статические методы, помеченные модификатором static. Для методов слово static имеет совсем другой смысл. Исполняющая система Java всегда создает в памяти только одну копию машинного кода метода, разделяемую всеми экземплярами, независимо от того, статический это метод или нет.

Основная особенность статических методов — они выполняются сразу во всех экземплярах класса. Более того, они могут выполняться, даже если не создан ни один экземпляр класса. Достаточно уточнить имя метода именем класса (а не именем объекта), чтобы метод мог работать. Именно так мы пользовались методами класса Math, не создавая его экземпляры, а просто записывая Math.abs(x), Math.sqrt(x). Точно так же мы использовали метод System, out. println(). Да и методом main() мы пользуемся, вообще не создавая никаких объектов.




Дата добавления: 2015-09-11; просмотров: 210 | Поможем написать вашу работу | Нарушение авторских прав

Знатокам Pascal | Третий этап — инициализация (initialization). На этом этапе элементы массива получают начальные значения. Например, | Парадигмы программирования | Рассмотрим подробнее принципы объектно-ориентированного программирования. | Знатокам Pascal | В этой терминологии говорят о наследовании (inheritance) классов, в нашем примере класс Dog наследует класс Pet. | Для того чтобы правильно реализовать принцип ответственности, применяется четвертый принцип объектно-ориентированного программирования — модульность (modularity). | Private Master person; | Public class Chorus( | Замкнуть же иерархию можно окончательными классами. |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.013 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав