среда, 12 ноября 2014 г.

Подготовка к OCA. Важные фишки. Часть 1.

Кто много пишет в одном посте, рискует быть недочитанным. Поэтому я решила разбить на части.
  • В одном файле можно объявлять сколько один или несколько классов и интерфейсов. Но есть один  нюанс. Если хоть один класс или интерфейс (а больше чем 1 и нельзя) объявлен как public, то файл должен иметь название точно такое же как название этого public класса или интерфейса, иначе ошибка компиляции в стиле:

Multiple.java:1: error: class Printable is public, should be declared in a file named Printable.java
public interface Printable {
       ^
1 error
  •  В объявлении ф-ции main  модификаторы public и static можно менять местами.
  •  Класс, который принадлежит дефолтному пакету, можно использовать в других классах дефолтного пакета, если они находятся в одной и той же директории. Класс из дефолтного пакета нельзя импортировать в класс, который находится в именованном пакете.
  • Protected члены родительского класса не доступны в производном, если доступ к ним, осуществляется через создание экземпляра родительского класса через new. 
  • Интерфейс не может быть final. Интерфейс неявно является абстрактным, и добавление к нему final вызовет ошибку компиляции.
  • Статические переменные и методы наследуются дочерними классами, для них нельзя сделать переопределение в полном смысле, но можно определить такой же метод, но тут не будет ничего общего с полиморфизмом времени выполнения. 
  • char тип  - unsigned. 
  • Когда Вы используете явное преобразование типов, и пытаетесь преобразовать значение большего размера, чем вмещает тип данных, то Вы говорите компилятору, что знаете, что делаете, поэтому компилятор отрезает лишние биты, которые не влазят в меньший диапазон типа данных.
  • В идентификаторах нельзя использовать '-' символ.
  • В стеке хранятся примитивные типы и ссылки. Объекты хранятся в куче.