Объявление класса
Объявление класса вводит новый ссылочный тип и определяет или часть или всю его реализацию.
При загрузке класса выделяется память для всех его статических переменных и затем выполняется их инициализация.
Объявление класса может иметь следующее формальное описание:
МодификаторыКласса class ИмяКласса extends ИмяСуперКласса implements СписокРеализуемыхИнтерфейсов {ТелоКласса}
Тело класса содержит описание переменных, методов и вложенных классов и заключается в фигурные скобки. В частном случае тело класса может не содержать ни одного объявления.
Например:
public class A implements B { public A() { } public int Metod1(){return 0;} } interface B { public int Metod1(); }
Вложенный класс описывается так же, как и внешний.
В описании каждого класса указывается имя класса и тело класса, содержащее объявления полей класса. Дополнительно для класса могут быть заданы модификаторы класса и указан непосредственный суперкласс и реализуемые классом интерфейсы. Полями класса в Java называются переменные и методы, определяемые в теле класса.
Класс может иметь более одного модификатора класса.
В языке программирования Java существуют следующие модификаторы класса:
- abstract, являющийся модификатором реализации класса и определяющий, что класс может иметь абстрактные методы (методы, не имеющие реализации);
- final, являющийся модификатором ограничения иерархии классов и указывающий, что класс не может иметь подклассов (не должен никогда появляться во фразе extends объявления класса). Класс с модификатором final обязан реализовать все свои интерфейсы.
- public является модификатором доступа и указывает, что к данному классу разрешен доступ из других пакетов. Доступ может быть выполнен или непосредственно указанием квалифицированного имени класса, или с использованием оператора import.
Для указания модификаторов класса применяются следующие правила:
- если класс, имеющий абстрактные методы, объявлен без модификатора abstract, то возникает ошибка компиляции;
- для абстрактных классов нельзя создавать экземпляры класса;
- если при объявлении класса не указан модификатор public, то класс доступен только внутри своего пакета;
- при компиляции каждый общедоступный класс всегда записывается в отдельный файл с расширением .CLASS.
Такой файл называется модулем компиляции; - имя общедоступного класса должно совпадать с именем файла, содержащего код класса на языке Java;
- один модуль компиляции может содержать только один класс или интерфейс, имеющие модификатор public;
- один модуль компиляции может одновременно содержать объявление общедоступного класса и нескольких интерфейсов или классов, не имеющих модификатора public;
- один модуль компиляции не может одновременно содержать объявление общедоступного класса (public class) и общедоступного интерфейса (public interface);
- объявление класса одновременно с модификаторами final и abstract вызывает ошибку компиляции.
Любой класс может иметь только один суперкласс, указываемый ключевым словом extends. Наследуемый суперкласс должен быть доступным классом и не иметь модификатора final.
По умолчанию предполагается, что в том случае, если для класса не указано никакого суперкласса, то его непосредственным суперклассом станет класс Object из пакета java.lang, который всегда является корневым классом в любой формируемой иерархии классов.