- •Основы объектно-ориентированного программирования
- •Оглавление
- •Тема 1. Введение в предмет и содержание дисциплины 4
- •Теоретический раздел
- •Тема 1. Введение в предмет и содержание дисциплины
- •Особенности Java
- •Установка Java в переменных окружениях
- •Некоторые из особенностей элементов Java
- •Символы, строки и идентификаторы
- •Комментарии
- •Ключевые слова
- •Литералы
- •Разделители
- •Операции
- •Основные приложения Java
- •Метод update()
- •Требование перерисовки
- •Тема 3. Введение в классы java. Методы и классы. Классы и наследование в java. Пакеты и интерфейсы Введение в классы Java
- •Синтаксис определения экземпляра класса
- •Модификаторы класса
- •Конструкторы
- •Ограничение доступа к элементам класса
- •Статические переменные и методы
- •Абстрактные методы
- •Методы final
- •Область видимости переменных
- •Переменные this и super
- •Тема 4. Основы ввода/вывода. Работа со строковыми данными Работа со строками
- •Потоки ввода-вывода информации
- •Байтовые и символьные потоки
- •Классы байтовых потоков
- •Классы символьных потоков
- •Предопределённые потоки
- •Тема 5. Работа с файлами Классы FileInputStream и FileOutputStream
- •Класс File
- •Класс RandomAccessFile
- •Тема 6. Методы и средства обработки исключений Методы и средства обработки исключений
- •Тема 7. Разработка апплетов, работа с графикой
- •Пакет awt
- •Класс Applet
- •Инициализация и завершение апплета
- •Запуск апплетов
- •Рисование линий в апплете
- •Рисование прямоугольников в апплете
- •Рисование эллипсов и кругов в апплете
- •Рисование дуг в апплете
- •Работа с цветом
- •Тема 8. Многопоточное программирование Интерфейсы в Java
- •Многопоточное программирование
- •Организация потоков
- •Создание нового потока
- •Тема 9. Разработка пользовательского интерфейса с использованием фреймов, элементов управления
- •События
- •Классы событий
- •Класс ActionEvent
- •Элементы-источники событий
- •Интерфейсы прослушивания событий
- •Классы пакета awt: Component, Window, Frame
- •Элементы управления Label, Button, Checkbox, Choice, List, Scrollbar
- •Элементы управления TextField и TextArea
- •Диалоговые окна
- •Контроль знаний Индивидуальная практическая работа № 1. «Объекты и классы»
- •Индивидульная практическая работа № 2. «Наследование и скрытие данных. Абстрактные классы и интерфейсы»
- •Контрольная работа № 1. «Работа с файлами»
- •Контрольная работа № 2. «Разработка пользовательского интерфейса с использованием фреймов, элементов управления»
- •Список использованных источников
Абстрактные методы
Объявляются при помощи ключевого слова abstract:
abstract void my_f1();
Абстрактный метод не имеет тела, нельзя даже ставить { }. Эти методы удобно использовать, если необходимо, чтобы метод присутствовал во всех классах потомках, но во всех классах имел разную реализацию.
Рис.
3.1. Абстрактный метод и его реализация
Метод “зарплата” абстрактный. При создании производных классов этот метод переопределяется так, как нужно в каждом из них.
Пример:
abstract class worker
{ protected int Age;
public String Name;
abstract public void setSalary(int newSalary);
}
class boss extends worker
{ public void setSalary(int newSalary)
{ if (newSalary >=0)
Salary = newSalary;
else Salary = 3000;
}
}
В классе-потомке абстрактный метод имеет свою реализацию. Если мы объявили какой-то метод класса абстрактным, то и весь класс нужно объявить абстрактным. В абстрактных классах нельзя создавать экземпляры абстрактного класса, но можно объявить объектную ссылку: worker w.
Экземпляр:
worker w = new worker(); //нельзя создавать
Абстрактный класс может содержать и неабстрактные методы.
Методы final
Эти методы объявляются как окончательные, не подлежащие дальнейшему переопределению при наследовании.
final void my_fun( )
{…}
Ключевое слово final нельзя использовать для абстрактных методов.
Параметры, принимаемые методом final, могут передаваться как по значению (для базовых простых предопределённых типов данных), так и по ссылке (если в качестве параметра указывается объект).
Область видимости переменных
Если объявляется переменная, то она доступна от точки объявления до конца блока, в котором она объявлена. Во внутреннем блоке видны переменные, объявленные во внешнем блоке, но не наоборот. Если переменные объявляются с одинаковыми именами во внутреннем и внешнем блоке, то во внутреннем блоке внешнее имя скрыто внутренним переопределением, то есть во внутреннем блоке видно только внутреннее объявление переменной.
Переменные this и super
Если необходимо обратиться к элементам собственного класса, то используется переменная this. Доступ к super-классу или родительскому классу осуществляется при помощи переменной super (если как переменная, то без ( ); если как конструктор, то super( );).
Использовать такую переменную удобно, если в производном классе используется переопределённый метод, в котором используется код исходного метода. Часто переменная super используется для вызова конструктора базового класса в конструкторе производного класса.
Пример:
class my_class2 extends my_class1
{ ………….
public static void f1(int x, int y)
{ …………..
super.f1(x,y);
………… }
public my_class2(String str)
{ super(str1);
……….}
}
super и this неприменимы в классе с модификатором static.
Пример:
class MyClass
{ String s;
int i;
void f1(char c)
{ this.i=3; } //можно i=3
}
this используется в методах при обращении к элементам этого же класса.
