вап. Классы. Экземпляр класса
Скачать 21.03 Kb.
|
Классы Java является объектно-ориентированным языком, поэтому такие понятия как "класс" и "объект" играют в нем ключевую роль. Любую программу на Java можно представить как набор взаимодействующих между собой объектов. Шаблоном или описанием объекта является класс (class), а объект представляет экземпляр класса. Можно провести следующую аналогию. У нас у всех есть некоторое представление о машине - наличие двигателя, шасси, кузова и т.д. Есть некоторый шаблон auto - этот шаблон можно назвать классом. Реально же существующий автомобиль auto_solaris (фактически экземпляр данного класса) является объектом этого класса. Определение класса Класс определяется с помощью ключевого слова сlass. Вся функциональность класса представлена его членами - полями (полями называются переменные класса) и методами. Например, класс Book мог бы иметь следующее описание : class Book { public String name; public String author; public int year; public void Info(){ System.out.printf("Книга '%s' (автор %s) была издана в %d году \n", name, author, year); } } Таким образом, в классе Book определены три переменных и один метод Info, который выводит значения этих переменных. Кроме обычных методов в классах используются также и специальные методы, которые называются конструкторами. Конструкторы нужны для создания нового объекта данного класса и, как правило, выполняют начальную инициализацию объекта. Название конструктора должно совпадать с названием класса : class Book { public String name; public String author; public int year; Book(){ this.name = "неизвестно"; this.author = "неизвестно"; this.year = 0; } Book(String name, String author, int year){ this.name = name; this.author = author; this.year = year; } public void Info(){ System.out.printf("Книга '%s' (автор %s) была издана в %d году \n", name, author, year); } Класс Book имеет два конструктора. Первый конструктор без параметров присваивает "неопределенные" начальные значения полям. Второй конструктор присваивает полям класса значения, которые передаются через его параметры. Так как имена параметров и имена полей класса в данном случае у нас совпадают - name, author, year, то мы используем ключевое слово this. Это ключевое слово представляет ссылку на текущий объект. Поэтому в выражении this.name = name; первая часть this.name означает, что name - это поле текущего класса, а не название параметра name. Если бы у нас параметры и поля назывались по-разному, то использовать слово this было бы необязательно. Мы можем определить несколько конструкторов для установки разного количества параметров и затем вызывать один конструктор класса из другого : Вызов конструктора класса с двумя параметрами производится с помощью ключевого слова this, после которого в скобках указывается список параметров. Абстрактный класс, abstract classАбстрактный класс в объектно-ориентированном программировании — базовый класс, который не предполагает создания экземпляров. Абстрактные классы реализуют на практике один из принципов ООП — полиморфизм. Абстрактный класс может содержать (и не содержать) абстрактные методы. Абстрактный метод не реализуется для класса, в котором описан, однако должен быть реализован для его неабстрактных потомков. Суперкласс ObjectВ Java есть специальный суперкласс Object и все классы являются его подклассами. Поэтому ссылочная переменная класса Object может ссылаться на объект любого другого класса. Так как массивы являются тоже классами, то переменная класса Object может ссылаться и на любой массив. |