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

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

Область видимости и время жизни переменных

Читайте также:
  1. B. совокупность взаимосвязанных и взаимозависимых видов в определенном пространстве, пригодном для жизни
  2. GRP, расчет показателя, область применения.
  3. II. Понятие обобщенной зоны радиовидимости
  4. III. Как быть с собором в наше время?
  5. IV АНАМНЕЗ ЖИЗНИ БОЛЬНОГО
  6. IV АНАМНЕЗ ЖИЗНИ БОЛЬНОГО
  7. IV. АНАМНЕЗ ЖИЗНИ БОЛЬНОГО
  8. IV. АНАМНЕЗ ЖИЗНИ БОЛЬНОГО
  9. IV. АНАМНЕЗ ЖИЗНИ БОЛЬНОГО
  10. IV. ИСТОРИЯ ЖИЗНИ БОЛЬНОГО

В различных языках программирования существуют различные типы или классы переменных — локальные, глобальные, статические и т.п. В Java только один тип переменных — локальные переменные. Время жизни переменной в Java определяется правилом:

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

В Java блок — это то, что начинается открывающей фигурной скобкой '{' и заканчивается закрывающей фигурной скобкой '}'.

Областью видимости переменной (scope) является фрагмент программы от точки ее описания до конца текущего блока.

Область видимости — это статическое понятие, имеющее отношение к какому-то фрагменту текста программы. Время жизни, в отличие от области видимости, — это понятие динамики выполнения программы. Время жизни переменных в Java совпадает с их областью видимости с учетом отличия самих этих понятий.

Если в блоке, где описана данная переменная, вложены другие блоки, то переменная доступна в этих.

В Java нет явного уничтожения объектов. Объекты уничтожаются (говорят — утилизируются) сборщиком мусора (garbage collector), который работает в фоновом режиме параллельно с самой программой на Java.

5) Как выглядит элементарная структура класса? Что может содержать тело класса? Каковы область видимости и время жизни для локальных переменных и объектов?

В простейшем случае описание класса выглядит так

class MyClass {

... // тело класса

}

Область видимости и время жизни объектов (переменных – смотри выше п.4)

Иная картина наблюдается с объектами. Объекты доступны в программе только через ссылки на них. Поэтому область видимости объекта определяется областью видимости ссылок на этот объект (на один объект может быть сколько угодно ссылок).

Время жизни объекта определяется следующим правилом.

Объект существует, пока существует хотя бы одна ссылка на этот объект.

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

В Java нет явного уничтожения объектов. Объекты уничтожаются (говорят — утилизируются) сборщиком мусора (garbage collector), который работает в фоновом режиме параллельно с самой программой на Java.

6) Как описывается и вызывается метод? Где должно находится описание метода в Java? Какое значение имеет ключевое слово public при описании класса?

В первом приближении методы класса (class methods) можно рассматривать как функции.

Описание метода выглядит следующим образом

<тип> <имя_метода> (<аргументы>) {

<тело_метода>

}

Здесь <тип> — это один из базовых типов (см. таблицу выше) или пользовательский тип (т.е. некоторое имя класса). <аргументы> — это список, возможно пустой, параметров метода. <тело_метода> — собственно программный код данного метода.

Каждый аргумент или параметр метода в данном описании — это пара "<тип> <имя_аргумента>". Аргументы отделяются друг от друга запятыми.

Описания методов расположены внутри класса, на том же уровне вложенности скобок, что и описание полей класса. Не может быть описания метода вне класса или внутри другого метода или блока.

public при описании класса указывает на право доступа к данному классу, в данном случае класс виден всем и является общедоступным.

7) Чем отличаются статические поля и методы от нестатических? Как объявляются такие поля и методы? Какие переменные могут использоваться в статических методах?

Статическое поле или создается в единственном экземпляре вне зависимости от количества объектов данного класса. Существует даже в том случае, если не создано ни одного экземпляра класса. Стат. методы могут обращаться только ко статическим полям своего класса, к остальным – только через экземпляр класса.

Для указания того, что поле или метод являются статическими, используется описатель static перед именем типа поля или метода:

class SomeClass {

static int t = 0; // статическое поле

public static void f() { } // статический метод

}

При вызове статического метода перед ним можно указать не ссылку, а имя класса:

class SomeClass {

public static void f() {} // статический метод

}

SomeClass.f();

8) Что представляет собой конструктор класса? Зачем он нужен? Какие варианты ограничения доступа к переменным и полям класса существуют в Java?

Конструктор – это специальный метод класса, его имя совпадает с именем класса, который выполняется при создании объекта. Не возвращает никакого значения, может иметь параметры. Конструктор без параметров называется конструктором по умолчанию (default constructor). В классе может быть несколько конструкторов. В этом случае они должны иметь разные наборы параметров. Если в классе нет ни одного конструктора, то генерируется пустой конструктор по умолчанию. Если в классе есть хотя бы один конструктор, то конструктор по умолчанию не генерируется.

SomeClass obj = new SomeClass();

В данном случае создается объект и при его создании используется конструктор без параметров (конструктор по умолчанию).

SomeClass obj = new SomeClass(1, 'a');

Здесь при создании объекта вызывается конструктор с двумя параметрами. Т.е. в классе SomeClass должен быть описан конструктор, имеющий один арифметический параметр (например, int) и один символьный параметр.

В Java можно вызвать один конструктор из другого. Для этого используется ключевое слово this. Такой вызов должен быть первым оператором в вызывающем конструкторе:

class SomeClass {

public SomeClass () {}

public SomeClass (int a) {

this. SomeClass ();

}

}

9) В чем заключается суть наследования? Как отличить класс, наследующий другой класс? Какое ограничение существует на количество классов-наследников?

Наследование позволяет строить новые классы на базе существующих, добавляя в них новые возможности или переопределяя существующие.

Пусть есть класс A, он имеет поля a1, a2,..., an и методы f1(), f2(),..., fm(). Тогда мы можем на его основе построить класс B. Класс B наследует все поля и методы класса A (за исключением конструкторов). Кроме того, в B можно добавить новые поля, методы, переопределить какие-либо методы класса A.

Синтаксис:

class B extends A {

//тело класса

}

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

Класс A называют суперклассом (superclass). B - подклассом (subclass), классом-потомком.В свою очередь, класс A может быть порожден на базе другого класса, тогда этот класс является предком как для A, так и для B. От одного класса может быть порождено произвольное количество новых классов. В результате получается иерархия классов, порожденных один от другого. В отличие от C++ в Java нет множественного наследования. Т.е. у класса может быть только один базовый класс. Соответственно, наследование формирует строгую иерархию классов - иерархию наследования (дерево классов). В классе-потомке можно переопределять (overriding) методы суперкласса. При этом метод в классе-потомке должен иметь в то же описание, что и базовом (модификаторы доступа, возвр. значение, передаваемые параметры).

class Base {

int a, b, c;

int f() {}

void g(int p) {}

}

class Derived extends Base {

long d, e;

long f1() {}

void g(int p) {}

}

Объекты класса Base имеют три поля (a, b и c), два метода (f() и g(...)),

объекты класса Derived - пять полей (a, b, c, d и e), три метода (f(), g(...) и f1()). Для объектов класса Derived будет вызываться не метод g() из Base, а метод g () из Derived.

 

- Создать базу данных (название для БД Ваша фамилия).

- Создать в этой БД таблицу Subject_BDKSU с полями lab_name, number_of_lab. Тип полей задать произвольно.

- Заполнить поля таблицы тремя записями (содержание на Ваше усмотрение).

- Выполнить запрос на выборку всей информации при условии, что number_of_lab=1.

 

Z:\usr\local\mysql-5.5\bin>mysql -u root – запустить mysql

CREATE DATABASE Surname; - создать БД с названием Surname

USE Surname; - сделать Surname активной БД

CREATE TABLE Subject_BDKSU (lab_name VARCHAR(18), number_of_lab INTEGER (2)); - создать таблицу Subject_BDKSU с полями lab_name (строковый тип данных, макс. длинна – 18 символов, number_of_lab – целочичсенный тип данных

INSERT INTO Subject_BDKSU VALUES ('Lab1', 1);

INSERT INTO Subject_BDKSU VALUES ('Lab2', 2);

INSERT INTO Subject_BDKSU VALUES ('Lab3', 3);

вставить 3 строки в таблицу Subject_BDKSU (строку Lab1 и число 1).

SELECT * FROM Subject_BDKSU WHERE number_of_lab=1; - вывести все строки, где number_of_lab=1

как-бы, ещё:

SELECT * FROM Subject_BDKSU WHERE number_of_lab=1 ORDER BY lab_name DESC; -вывести все строки, где number_of_lab=1, отсортировав по столбцу lab_name по-убыванию




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




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