Кто много пишет в одном посте, рискует быть недочитанным. Поэтому я решила разбить на части.
Multiple.java:1: error: class Printable is public, should be declared in a file named Printable.java
public interface Printable {
^
1 error
- В одном файле можно объявлять сколько один или несколько классов и интерфейсов. Но есть один нюанс. Если хоть один класс или интерфейс (а больше чем 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.
- Когда Вы используете явное преобразование типов, и пытаетесь преобразовать значение большего размера, чем вмещает тип данных, то Вы говорите компилятору, что знаете, что делаете, поэтому компилятор отрезает лишние биты, которые не влазят в меньший диапазон типа данных.
- В идентификаторах нельзя использовать '-' символ.
- В стеке хранятся примитивные типы и ссылки. Объекты хранятся в куче.