
- •Особенности реализации основных фундаментальных свойств ооп в Java.
- •2. Понятие и определение класса.
- •3. Динамическая инициализация объектов.
- •4. Модификаторы класса.
- •5.Ограничения доступа к элементам класса.
- •6. Методы класса. Метод main(). Конструкторы класса.
- •7. Основы наследования: понятие суперкласса и подкласса, организация связей при наследовании.
- •8. Модификаторы ограничения доступа к элементам при наследовании.
- •9. Перегрузка, переопределение методов и их применение.
- •10. Использование ключевого слова final при наследовании.
- •11. Понятие и использование абстрактных классов.
- •12.Интерфейсы. Определение интерфейсов.
- •14. Интерфейсы. Пример применения интерфейсов.
- •15. Байтовые и символьные потоки ввода/вывода в Java.
- •16. Чтение консольного ввода.
- •17. Запись консольного вывода.
- •18.Чтение и запись файлов
- •19. Обработка строк. String-конструкторы
- •20. Обработка строк. Длина строки. Конкатенация строк.
- •21.Обработка строк. Извлечение символов. Сравнение строк. Поиск подстроки.
- •22.Преобразование данных, использующее метод valueOf().
- •23. Основные принципы обработки исключений. Типы исключений.
- •24. Использование операторов try и catch, множественные операторы catch.
- •25. Основы работы в сети. Понятие клиента и сервера.
- •26. Адресация в Internet.
- •27. Сетевые протоколы. Протоколы tcp/ip и udp.
- •28. Сокеты tcp/ip клиентов.
- •29. Сокеты tcp/ip серверов.
- •30. Основные классы и интерфейсы реализации сетевого взаимодействия.
- •31. Использование ключевого слова this.
- •32. Использование ключевых слов super, super()
9. Перегрузка, переопределение методов и их применение.
Java разрешает определение внутри одного класса двух или более методов с одним именем, если только объявления их параметров различны. В этом случае методы называют перегруженными, а процесс — перегрузкой методов. Перегрузка методов — один из способов поддержки полиморфизма в Java. Тем читателям, которые никогда не использовали язык, допускающий перегрузку методов, эта концепция вначале может показаться странной. Но, как вы вскоре убедитесь, перегрузка методов — одна из наиболее впечатляющих и полезных функциональных возможностей Java.
При вызове перегруженного метода для определения нужной версии Java использует тип и/или количество аргументов метода. Следовательно, перегруженные методы должны различаться по типу и/или количеству их параметров. Хотя возвращаемые типы перегруженных методов могут быть различны, самого возвращаемого типа не достаточно для различения двух версий метода. Когда Java встречает вызов перегруженного метода, она просто выполняет ту его версию, параметры которой соответствуют аргументам, использованным в вызове.
Использование полиморфизма при наследовании классов позволяет переопределять методы суперклассов их подклассами. Например, может возникнуть ситуация, когда все подклассы реализуют определенный метод из суперкласса, и лишь один подкласс должен иметь его другую реализацию. В таком случае метод переопределяется в подклассе
При наследовании все поля, методы базового класса переходят (наследуются) др. классом, но доступ к ним (базовым) может быть (public, friendly, protected), а может и не быть (private). Доступ из производного класса к полям и методам базового класса определяет специфика доступа к полю/методу , который указан в базовом классе.
10. Использование ключевого слова final при наследовании.
Ключевое слово final означает разные вещи при описании переменной, метода или класса. Финальное поле класса инициализируется при описании, или в конструкторе класса (а статичное поле — в статичном блоке инициализации) и дальше его значение не может быть изменено, Но при этом, их значения могут использоваться внутри анонимных классов
Метод класса, отмеченный словом final, не может быть переопределён при наследовании. Финальный класс не может иметь наследников вообще.
Ключевое слово final имеет три применения. Первое — его можно использовать для создания эквивалента именованной константы. Два других применения final связаны с наследованием.
Чтобы отменить переопределение метода, укажите модификатор final в начале его объявления. Методы, объявленные как final, не могут переопределяться.
class A {
final void meth() {
System.out.println("Это метод final.");
} }
class В extends A {
void meth() { // ОШИБКА! Нельзя переопределять.
System.out.println("Ошибка!");
} }
Поскольку meth объявлен как final, он не может быть переопределен в классе B. Если вы попытаетесь сделать это, то получите ошибку во время компиляции.
Иногда нужно разорвать наследственную связь классов (отменить наследование одного класса другим). Чтобы сделать это, предварите объявление класса ключевым словом final, что позволит неявно объявить и все его методы. Недопустимо объявлять класс одновременно как abstract и final.
final class A { // ...}
// Следующий класс незаконный.
class В extends А { //ОШИБКА! В не может быть подклассом А
// .. . }
Комментарий здесь означает, что в не может наследовать А, т.к. А объявлен как final.