Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Понятие абстрактного класса. ⇐ ПредыдущаяСтр 3 из 3
Класс, содержащий абстрактные методы, называется абстрактным классом. Такие классы помечаются ключевым словом abstract. Нельзя создать объект абстрактного класса. Абстрактный метод не завершён. Он состоит только из объявления и не имеет тела: abstract void yourMethod();По сути, мы создаём шаблон метода. Например, можно создать абстрактный метод для вычисления площади фигуры в классе Фигура. А все другие производные классы от главного класса могут уже реализовать свой код для готового метода. Ведь площадь у прямоугольника и треугольника вычисляется по разным алгоритмам и универсального метода не существует. Если вы объявляете класс, производный от абстрактного класса, но хотите иметь возможность создания объектов нового типа, вам придётся предоставить определения для всех абстрактных методов базового класса. Если этого не сделать, производный класс тоже останется абстрактным, и компилятор заставит пометить новый класс ключевым словом abstract. Абстрактный класс не обязательно должен иметь только абстрактные методы. Если класс содержит хотя бы один абстрактный метод, то он обязан быть сам абстрактным. Абстрактный класс не может содержать какие-либо объекты, а также абстрактные конструкторы и абстрактные статические методы(потому что статические методы нельзя перегружать). Пример abstract class А { abstract void callme(); void metoo() { System.out.println(" Вызван metoo метод класса A" ); } } class В extends A { void callme() { System.out.println(" Вызван callme метод класса В" ); } } class Abstract { public static void main(String args[]) { A a = new B(); a.callme(); a.metoo(); } }
Способы создания объектов класса Известно два способа создания объектов Новый объект (или экземпляр) создаётся из существующего класса при помощи ключевого слова new: Cat barsik = new Cat(); // создали кота из класса Cat Слева от оператора присваивания " =" определяется имя переменной. Переменная имеет тип Cat. В правой части выражения происходит выделение памяти для нового экземпляра класса Cat и инициализируется экземпляр. Оператор присваивания присваивает переменной ссылку на только что созданный объект. 2ой Загрузка и динамическое создание экземпляра класса Class c = Class.forName(" Test" ); Object obj = c.newInstance(); Test test = (Test) obj; С помощью методов Class.forName() и newInstance() объекта Class можно динамически загружать и создавать экземпляры класса в случае, когда имя класса неизвестно до момента выполнения программы. В приведенном коде мы загружаем класс с помощью метода Class.forName(), передавая имя этого класса. В результате возвращается объект типа Class. Затем мы вызываем метод newInstance() для объекта типа Class, чтобы создать экземпляры объекта исходного класса. Метод newInstance() возвращает объект обобщенного типа Object, поэтому в последней строке мы приводим возвращенный объект к тому типу, который нам нужен. Инкапсуляция и модификаторы доступа. В Java спецификаторы доступа public, protected, private располагаются перед определением полей и методов. Также используется, так называемый, «пакетный» уровень доступа, который используется если не указан никакой другой спецификатор. Рассмотрим каждый спецификатор поподробнее. 1) Доступ в пределах пакета Это доступ по умолчанию, который не имеет ключевого слова. В этом случае, член класса будет открытым для всех в пределах пакета, а за его пределами он воспринимается как закрытый. 2) Public При использовании этого слова мы объявляем, что все члены класса, которые будут объявлены за ним будут открыты для всех. 3) Private Когда будет использовано это слово, доступ к члену класса не будет доступен никому, кроме методов, используемых в этом классе. Даже другие классы этого же пакета не могут обращаться к этим членам. 4) Protected Это ключевое слово связано с понятием наследования, потому что, когда один класс наследует другой, все публичные члены базового класса становятся публичными членами производного класса. Этот спецификатор используется в том случае, когда необходимо открыть доступ к методу производным классам, но закрыть его от остальных. Основой инкапсуляции в Java является класс. Цель класса – инкапсуляция сложности. Инкапсуляция означает, что данные объекта недоступны его клиентам непосредственно. Вместо этого они инкапсулируются — скрываются от прямого доступа извне. Инкапсуляция предохраняет данные объекта от нежелательного доступа.
Понятие JVM Java Virtual Machine — виртуальная машина Java. Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac). JVM может также использоваться для выполнения программ, написанных на других языках программирования. Например, исходный код на языке Ada может быть откомпилирован в байт-код Java, который затем может выполниться с помощью JVM. JVM является ключевым компонентом платформы Java. Так как виртуальные машины Java доступны для многих аппаратных и программных платформ, Java может рассматриваться и как связующее программное обеспечение, и как самостоятельная платформа. Использование одного байт-кода для многих платформ позволяет описать Java как «скомпилировано однажды, запускается везде» (compile once, run anywhere). Компиляция и запуск программы JAVA. Процесс компиляции и запуска java программы можно рассмотреть на основе запуска java программы через командную строку. Сначала мы прописываем javac имя_класса.java, в папке с java файлом появляется новый файл имя_класса.class. И что бы наконец запустить нашу программу мы пишем в командной строке java имя_класса. Также в командной строке мы можем указать данные в String[] args. Пример: Понятие наследования. Механизм называется наследованием, если новый класс создается как специализация существующего, т.е. взяв класс, который у нас имеется, за основу, мы добавляем к нему код без изменения существующего класса. Наследование используется для того, чтобы не проделывать работу с каким-либо классом, похожим на класс, который ранее уже был создан. Поэтому мы берём готовый класс, клонируем его и вносим в этот клон какие- то обновления. Но, если родительский(суперкласс) меняется, то меняется и дочерний(подкласс). Наследование является одним из принципов ООП, поэтому используется во всех ООП-языках, в том числе и в Java. Синтаксис наследования Нам необходимо показать, что новый класс похож на старый, для этого в программе перед фигурной скобкой, которая открывает тело класса, записываем сначала ключевое слово extends, после чего указываем имя базового класса. Этим действием мы получаем автоматически доступ ко всем методам и полям базового класса. Расширение классов. Функциональные возможности существующего класса можно расширить путем создания нового класса, производного от существующего. Производный класс наследует все свойства базового класса, и можно добавлять или переопределять методы и свойства в зависимости от необходимости. Пример int х, у; Point(int х, int у) { this.x = х; this. y = y; } } Раширим класс Point class Point3D extends Point { int z; Point3D(int x, int y, int z) { super(x, y); this.z = z; } Point3D() { this(-1, -1, -1); } } Реализация интерфейса. Для использования интерфейса вы должны написать класс, который будет реализовывать ваш интерфейс. Класс который реализует интерфейс, должен описывать все методы, объявленные в интерфейсе. Для того, чтобы реализовать интерфейс используется ключевое слово implements: public class имя_класса implements название_интерфейса { Класс может реализовывать много интерфейсов. Объявление реализуемых интерфейсов идет после объявления наследуемого (extends) класса (если есть). Перед каждой реализацией метода стоит ключевое слово @Override. Популярное:
|
Последнее изменение этой страницы: 2017-03-03; Просмотров: 804; Нарушение авторского права страницы