Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Переменная super




Переменная this

Переменная null

Прежде чем использовать какой-то класс, его нужно реализовать, т.е. создать объект (экземпляр) этого класса. До этого класс имеет значение переменной null и говорят, что объектравеннулю. Если объект равен нулю, доступ к его элементам не разрешен, потому что не создан объект, с которым могли бы ассоциироваться эти элементы. Если попытаться обратиться к элементам до того, как создан объект, то вызовется исключение, которое остановит выполнение программы. Например, определим метод класса ClassB, использующий передаваемый ему объект класса ClassA:

piblic void SomeMethodСlassB(СlassA ObjClassA)

{

ObjClassA.SomeMethodClassA();

}

Следующий фрагмент метода класса ClassB, в котором вызывается метод SomeMethodСlassB, приведет к исключению NullPointerException, потому что не создан SomeMethodClassA:

ClassA ObjectClassA;

SomeMethodClassB(ObjectClassA);

Чтобы уберечь программу от сбоев, необходимо перед использованием объектов проверять их на равенство. Изменим метод SomeMethodClassB:

piblic void SomeMethodСlassB(СlassA ObjClassA)

{

if(ObjClassA==null) { System.out.println("A пусто!!!"); }

else { ObjClassA.SomeMethodClassA(); }

}

Иногда бывает необходимо передать другому методу ссылку на текущий объект. Это можно сделать, просто передав переменную особую ссылочную переменную this.

Кроме того, переменная this используется для ссылок на переменную экземпляра. Например, если на уровне класса объявлена переменная-элемент с именем ИмяПеременной, то ничто не мешает объявить локальную переменную с тем же именем ИмяПеременной внутри какого-либо из методов класса, которая скроет вышестоящую переменную и сделает ее недоступной (скрытие переменной). Внутри метода идентификатор ИмяПеременной будет относиться именно к локальной переменной, объявленной в этом методе. Однако существует возможность получить доступ к переменной-элементу, даже если она скрыта. Для этого нужно воспользоватьсяпеременной this. Переменная this всегда указывает на текущий класс, поэтому, чтобы в методе получить доступ к скрытой переменной, объявленной в текущем классе, нужно явным образом указать принадлежность переменной к классу, а не к методу:

this.ИмяПеременной

Еще одна возможность использования этой ссылочной переменной - вызов в конструкторе класса другого конструктора этого же класса:

this(<ПараметрыДругогоКонструктораКласса>);

Другая специальная переменная языка Java super ссылается на суперкласс объекта. При помощи нее можно получить доступ к затененным переменным и замещенным методам родительского класса Затенение переменной класса в его подклассе возникает при объявлении в подклассе переменной таким же именем, что и имя переменной его суперкласса. Например, в классе объявлена переменная с именем ИмяПеременной и в его подклассе также объявлена переменная с тем же именем ИмяПеременной. Для осуществления в подклассе доступа к такой переменной суперкласса необходимо использовать переменную super:

super.ИмяПеременной

При замещении метода в классе создается метод, имеющий то же самое имя и список параметров, что и метод в суперклассе. Таким образом метод суперкласса замещается методом подкласса. Однако можно использовать переменную super выполнения замещенного метода суперкласса:

super.ИмяМетодаСуперкласса (ПараметрыМетодаСуперкласса);

Используя переменную super, в конструкторе подкласса можно вызвать конструктор родительского класса. Нужно заметить, что при создании объектов подкласса сначала автоматически вызывается конструктор суперкласса без параметров (если он не определен, то вызывается задаваемый по умолчанию конструктор без параметров), а затем только конструктор подкласса. Но если в конструкторе подкласса есть явный вызов конструктора суперкласса, то автоматического вызова конструктора суперкласса без параметров не происходит. Сначала вызывается требуемый явным вызовом конструктор суперкласса, а затем только конструктор подкласса.

Если возникает необходимость вызвать конструктор суперкласса из конструктора подкласса, то это можно сделать, используя ключевое слово super. Для того, чтобы вызвать из конструктора подкласса конструктор суперкласса, нужно использовать следующую запись:

super(<ПараметрыКонструктораСуперкласса>).

В том конструкторе подкласса, в котором используется подобный вызов конструктора суперкласса, этот оператор должен быть первым исполняемым оператором.

Замечание. Не следует считать, что переменная super указывает на совершенно отдельный объект. Чтобы ее использовать, не нужно реализовывать суперкласс. На самом деле это просто способ обращения к переменным-элементам суперкласса и способ выполнения методов и конструкторов, определенных в суперкласса

2.4 Пакеты и импортирование

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

2.4.1 Использование пакетов

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




Поделиться с друзьями:


Дата добавления: 2014-11-20; Просмотров: 657; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.