🗊 Презентация КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA

Категория: Образование
Нажмите для полного просмотра!
КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №1 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №2 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №3 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №4 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №5 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №6 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №7 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №8 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №9 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №10 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №11 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №12 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №13 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №14 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №15 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №16 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №17 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №18 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №19 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №20 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №21 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №22 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №23 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №24 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №25 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №26 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №27 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №28 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №29 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №30 КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA, слайд №31

Содержание

Вы можете ознакомиться и скачать презентацию на тему КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA. Доклад-сообщение содержит 31 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA
Описание слайда:
КЛАССЫ И НАСЛЕДОВАНИЕ В JAVA

Слайд 2


Основы наследования Наследование позволяет создавать иерархические классификации. Используя наследование, можно создать главный класс, который...
Описание слайда:
Основы наследования Наследование позволяет создавать иерархические классификации. Используя наследование, можно создать главный класс, который определяет свойства, общие для набора связанных элементов. Класс, который унаследован, называется суперклассом (superclass). Класс, который выполняет наследование, называется подклассом (subclass) — это специализированная версия суперкласса. Он наследует все переменные экземпляра и методы, определенные суперклассом, и прибавляет свои собственные уникальные элементы.

Слайд 3


Основы наследования Чтобы наследовать класс, нужно просто включить определение одного класса в другое, используя ключевое слово extends.
Описание слайда:
Основы наследования Чтобы наследовать класс, нужно просто включить определение одного класса в другое, используя ключевое слово extends.

Слайд 4


Простой пример наследования // Создать суперкласс, class A { int i, j; void showi j () {. System.out.println("i и j: " + i + " "...
Описание слайда:
Простой пример наследования // Создать суперкласс, class A { int i, j; void showi j () {. System.out.println("i и j: " + i + " " + j); } } II Создать подкласс расширением класса А. class В extends A { int k; void showk() { System.out.printIn("к: " + к); } void sum() { System.out.println("i+j+k: " + (i+j+k)); } } class Simplelnheritance { public static void main(String args[]) { A superOb = new A(); В subOb = new В();

Слайд 5


Доступ к элементам и наследование Хотя подкласс включает все элементы (члены) своего суперкласса, он не может обращаться к тем элементам суперкласса,...
Описание слайда:
Доступ к элементам и наследование Хотя подкласс включает все элементы (члены) своего суперкласса, он не может обращаться к тем элементам суперкласса, которые были объявлены как private.

Слайд 6


Создание многоуровневой иерархии Мы можем сделать описание своих домашних животных (pets): кошек (cats), собак (dogs), коров (cows) и прочих...
Описание слайда:
Создание многоуровневой иерархии Мы можем сделать описание своих домашних животных (pets): кошек (cats), собак (dogs), коров (cows) и прочих следующим образом: class Pet{ // Здесь описываем общие свойства всех домашних любимцев Master person; // Хозяин животного int weight, age, eatTimel]; // Вес, возраст, время кормления int eat(int food, int drink, int time){ // Процесс кормления // Начальные действия... if (time == eatTimefi]) person.getFood(food, drink); // Метод потребления пищи } void voice(); // Звуки, издаваемые животным // Прочее... }

Слайд 7


Создание многоуровневой иерархии Затем создаем классы, описывающие более конкретные объекты, связывая их с общим классом: class Cat extends Pet{ //...
Описание слайда:
Создание многоуровневой иерархии Затем создаем классы, описывающие более конкретные объекты, связывая их с общим классом: class Cat extends Pet{ // Описываются свойства, присущие только кошкам: int mouseCatched; // число пойманных мышей void toMouse(); // процесс ловли мышей // Прочие свойства } class Dog extends Pet{ // Свойства собак: void preserve(); // охранять }

Слайд 8


Создание многоуровневой иерархии Заметьте, что мы не повторяем общие свойства, описанные в классе Pet . Они наследуются автоматически. Мы можем...
Описание слайда:
Создание многоуровневой иерархии Заметьте, что мы не повторяем общие свойства, описанные в классе Pet . Они наследуются автоматически. Мы можем определить объект класса Dog и использовать в нем все свойства класса Pet так, как будто они описаны в классе Dog : Dog tuzik = new Dog(), sharik = new Dog(); После этого определения можно будет написать tuzik.age = 3; int p = sharik.eat (30, 10, 12); А классификацию продолжить так: class Pointer extends Dog{ ... } // Свойства породы Пойнтер class Setter extends Dog{ ... } // Свойства сеттеров

Слайд 9


Создание многоуровневой иерархии Заметьте, что на каждом следующем уровне иерархии в класс добавляются новые свойства, но ни одно свойство не...
Описание слайда:
Создание многоуровневой иерархии Заметьте, что на каждом следующем уровне иерархии в класс добавляются новые свойства, но ни одно свойство не пропадает. Поэтому и употребляется слово extends — "расширяет" и говорят, что класс Dog — расширение (extension) класса Pet . С другой стороны, количество объектов при этом уменьшается: собак меньше, чем всех домашних животных. Поэтому часто говорят, что класс Dog — подкласс (subclass) класса Pet , а класс Pet — суперкласс (superclass) или надкласс класса Dog . Часто используют генеалогическую терминологию: родительский класс, дочерний класс, класс-потомок, класс-предок. Класс Dog наследует класс Pet . Опишем в классе Master владельца домашнего зоопарка. class Master{ // Хозяин животного String name; // Фамилия, имя // Другие сведения void getFood(int food, int drink); // Кормление // Прочее }

Слайд 10


Модификаторы ограничения доступа к элементам при наследовании class Bisection2{ private static double final EPS = 1e-8; // Константа private double a...
Описание слайда:
Модификаторы ограничения доступа к элементам при наследовании class Bisection2{ private static double final EPS = 1e-8; // Константа private double a = 0.0, b = 1.5, root; // Закрытые поля public double getRoot(}{return root;} // Метод доступа private double f(double x) { return x*x*x — 3*x*x + 3; // Или что-то другое } private void bisect(){ // Параметров нет — // метод работает с полями экземпляра double у = 0.0; // Локальная переменная — не поле do{ root = 0.5 *(а + b); у = f(root); if (Math.abs(y) < EPS) break; // Корень найден. Выходим из цикла // Если на концах отрезка [a; root] // функция имеет разные знаки:

Слайд 11


Понятие и использование абстрактных классов При описании класса Pet мы не можем задать в методе voice () никакой полезный алгоритм, поскольку у всех...
Описание слайда:
Понятие и использование абстрактных классов При описании класса Pet мы не можем задать в методе voice () никакой полезный алгоритм, поскольку у всех животных совершенно разные голоса. В таких случаях мы записываем только заголовок метода и ставим после закрывающей список параметров скобки точку с запятой. Этот метод будет абстрактным (abstract). Использовать абстрактные классы можно только порождая от них подклассы, в которых переопределены абстрактные методы.

Слайд 12


Понятие и использование абстрактных классов Хотя элементы массива singer [] ссылаются на подклассы Dog, Cat, Cow, но все-таки это переменные типа Pet...
Описание слайда:
Понятие и использование абстрактных классов Хотя элементы массива singer [] ссылаются на подклассы Dog, Cat, Cow, но все-таки это переменные типа Pet и ссылаться они могут только на поля и методы, описанные в суперклассе Pet . Дополнительные поля подкласса для них недоступны. Если обратиться, например, к полю k класса Dog , написав singer [0].k , то получим отклик о невозможности реализовать такую ссылку. Поэтому метод, который реализуется в нескольких подклассах, приходится выносить в суперкласс, а если там его нельзя реализовать, то объявить абстрактным. Абстрактные классы группируются на вершине иерархии классов. Можно задать пустую реализацию метода, просто поставив пару фигурных скобок, ничего не написав между ними, например: void voice(){} Получится полноценный метод. Но это искусственное решение, запутывающее структуру класса.

Слайд 13


Окончательные члены и классы Пометив метод модификатором final , можно запретить его переопределение в подклассах. Это удобно в целях безопасности....
Описание слайда:
Окончательные члены и классы Пометив метод модификатором final , можно запретить его переопределение в подклассах. Это удобно в целях безопасности. Вы можете быть уверены, что метод выполняет те действия, которые вы задали. Именно так определены математические функции sin(), cos() и прочие в классе Math . Мы уверены, что метод Math.cos (x) вычисляет именно косинус числа х . Разумеется, такой метод не может быть абстрактным. Для полной безопасности, поля, обрабатываемые окончательными методами, следует сделать закрытыми (private).

Слайд 14


Окончательные члены и классы Если же пометить модификатором final весь класс, то его вообще нельзя будет расширить. Так определен, например, класс...
Описание слайда:
Окончательные члены и классы Если же пометить модификатором final весь класс, то его вообще нельзя будет расширить. Так определен, например, класс Math : public final class Math{ . . . } Для переменных модификатор final имеет совершенно другой смысл. Если пометить модификатором final описание переменной, то ее значение (а оно должно быть обязательно задано или здесь же, или в блоке инициализации или в конструкторе) нельзя изменить ни в подклассах, ни в самом классе. Переменная превращается в константу. Именно так в языке Java определяются константы: public final int MIN_VALUE = -1, MAX_VALUE = 9999; По соглашению "Code Conventions" константы записываются прописными буквами, слова в них разделяются знаком подчеркивания. На самой вершине иерархии классов Java стоит класс Object .

Слайд 15


Класс Object В Java определен один специальный класс — object. Все другие классы являются его подклассами, object — это суперкласс всех других...
Описание слайда:
Класс Object В Java определен один специальный класс — object. Все другие классы являются его подклассами, object — это суперкласс всех других классов. Это означает, что ссылочная переменная типа object может обращаться к объекту любого другого класса. Кроме того, т. к. массивы реализуются как классы, переменная типа object может также обращаться к любому массиву.

Слайд 16


Класс Object Если при описании класса мы не не пишем слово extends и имя класса за ним, то Java считает этот класс расширением класса object , и...
Описание слайда:
Класс Object Если при описании класса мы не не пишем слово extends и имя класса за ним, то Java считает этот класс расширением класса object , и компилятор дописывает это за нас: class Pet extends Object{ . . . } Можно записать это расширение и явно. Сам же класс object не является ничьим наследником, от него начинается иерархия любых классов Java. В частности, все массивы — прямые наследники класса object . Поскольку такой класс может содержать только общие свойства всех классов, в него включено лишь несколько самых общих методов, например, метод equals() , сравнивающий данный объект на равенство с объектом, заданным в аргументе, и возвращающий логическое значение. Его можно использовать так: Object obj1 = new Dog(), obj2 = new Cat(); if (obj1.equals(obj2)) ...

Слайд 17


Класс Object Объект obj1 активен, он сам сравнивает себя с другим объектом. Можно, конечно, записать и obj2.equals (obj1) , сделав активным объект...
Описание слайда:
Класс Object Объект obj1 активен, он сам сравнивает себя с другим объектом. Можно, конечно, записать и obj2.equals (obj1) , сделав активным объект obj2 , с тем же результатом. Ссылки можно сравнивать на равенство и неравенство: obj1 == obj2; obj1 != obj 2; В этом случае сопоставляются адреса объектов, мы можем узнать, не указывают ли обе ссылки на один и тот же объект.

Слайд 18


Класс Object Метод equals() же сравнивает содержимое объектов в их текущем состоянии, фактически он реализован в классе object как тождество: объект...
Описание слайда:
Класс Object Метод equals() же сравнивает содержимое объектов в их текущем состоянии, фактически он реализован в классе object как тождество: объект равен только самому себе. Поэтому его часто переопределяют в подклассах, более того, правильно спроектированные классы должны переопределить методы класса object , если их не устраивает стандартная реализация. Второй метод класса object , который следует переопределять в подклассах, — метод tostring () . Это метод без параметров, который пытается содержимое объекта преобразовать в строку символов и возвращает объект класса string . К этому методу исполняющая система Java обращается каждый раз, когда требуется представить объект в виде строки, например, в методе printing .

Слайд 19


Методы object
Описание слайда:
Методы object

Слайд 20


Методы object Методы getClass(), notify (), notifyAU() и wait () объявлены как final. Другие можно переопределять. Здесь отметим два метода: equals()...
Описание слайда:
Методы object Методы getClass(), notify (), notifyAU() и wait () объявлены как final. Другие можно переопределять. Здесь отметим два метода: equals() и toString(). Метод equals() о сравнивает содержимое двух объектов. Он возвращает true, если объекты эквивалентны, и false— в противном случае. Метод ToString() возвращает строку, содержащую описание объекта, на котором он вызывается. Кроме того, этот метод вызывается автоматически, когда объект выводится методом println ().

Слайд 21


Использование ключевого слова super (первый вид) Подкласс может вызывать метод конструктора, определенный его суперклассом, при помощи следующей...
Описание слайда:
Использование ключевого слова super (первый вид) Подкласс может вызывать метод конструктора, определенный его суперклассом, при помощи следующей формы super: super (parameter—list) ; Здесь parameter-list — список параметров, который определяет любые параметры, необходимые конструктору в суперклассе. Похожий по форме на конструктор super () должен всегда быть первым оператором, выполняемым внутри конструктора подкласса.

Слайд 22


Использование второй формы super Общий формат такого использования super имеет вид: super. member где member может быть либо методом, либо переменной...
Описание слайда:
Использование второй формы super Общий формат такого использования super имеет вид: super. member где member может быть либо методом, либо переменной экземпляра. Вторая форма super больше всего применима к ситуациям, когда имена элементов (членов) подкласса скрывают элементы с тем же именем в суперклассе. i из суперкласса: 1 i из подкласса: 2

Слайд 23


Переопределение методов abstract class Pet{ abstract void voice(); } class Dog extends Pet{ void voice(){ System.out.printin("Gav-gav!"); }...
Описание слайда:
Переопределение методов abstract class Pet{ abstract void voice(); } class Dog extends Pet{ void voice(){ System.out.printin("Gav-gav!"); } } class Cat extends Pet{ void voice () { System.out.printin("Miaou!"); } } class Cow extends Pet{ void voice(){ System.out.printin("Mu-u-u!"); } } public class Chorus( public static void main(String[] args){ Pet[] singer = new Pet[3]; singer[0] = new Dog(); singer[1] = new Cat(); singer[2] = new Cow(); for (int i = 0; i < singer.length; i++) singer[i].voice(); } }

Слайд 24


Переопределение методов class A { int i, j; A(int a, int b) { i = a; j = b; } // показать i и j на экране void show() ( System.out.println("i и...
Описание слайда:
Переопределение методов class A { int i, j; A(int a, int b) { i = a; j = b; } // показать i и j на экране void show() ( System.out.println("i и j: " + i + " " + j); } } class В extends A { int k; В(int a, int b, int c) { super(a, b); k = c; } // Показать на экране к (этот show(i переопределяет show() из А) void show() { System.out.println("k: " + k); } } class Override { public static void main(String args[]) { В subOb = new В(1, 2, 3); subOb.showO; // здесь вызывается show() из В } }

Слайд 25


Динамическая диспетчеризация методов Динамическая диспетчеризация методов это механизм, с помощью которого решение на вызов переопределенной функции...
Описание слайда:
Динамическая диспетчеризация методов Динамическая диспетчеризация методов это механизм, с помощью которого решение на вызов переопределенной функции принимается во время выполнения, а не во время компиляции. Принцип: ссылочная переменная суперкласса может обращаться к объекту подкласса. Java использует этот факт, чтобы принимать решения о вызове переопределенных методов во время выполнения.

Слайд 26


Динамическая диспетчеризация методов Когда переопределенный метод вызывается через ссылку суперкласса, Java определяет, какую версию этого метода...
Описание слайда:
Динамическая диспетчеризация методов Когда переопределенный метод вызывается через ссылку суперкласса, Java определяет, какую версию этого метода следует выполнять, основываясь на типе объекта, на который указывает ссылка в момент вызова. Это определение делается во время выполнения. Когда ссылка указывает на различные типы объектов, будут вызываться различные версии переопределенного метода. Другими словами, именно тип объекта, на который сделана ссылка (а не тип ссылочной переменной) определяет, какая версия переопределенного метода будет выполнена.

Слайд 27


Динамическая диспетчеризация методов class A { void callme () { System.out.println("Внутри А метод callme"); } } class В extends A ( //...
Описание слайда:
Динамическая диспетчеризация методов class A { void callme () { System.out.println("Внутри А метод callme"); } } class В extends A ( // переопределить callme() void callme{) { System.out.println("Внутри В метод callme"); } } class С extends A { // переопределить callme() void callme () { System.out.println("Внутри С метод callme"); }}

Слайд 28


Использование ключевого слова final с наследованием Ключевое слово final имеет три применения. Первое — его можно использовать для создания...
Описание слайда:
Использование ключевого слова final с наследованием Ключевое слово final имеет три применения. Первое — его можно использовать для создания эквивалента именованной константы. Два других применения final связаны с наследованием.

Слайд 29


Использование 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. Если вы попытаетесь сделать это, то получите ошибку во время компиляции.

Слайд 30


Использование final для отмены наследования Иногда нужно разорвать наследственную связь классов (отменить наследование одного класса другим). Чтобы...
Описание слайда:
Использование final для отмены наследования Иногда нужно разорвать наследственную связь классов (отменить наследование одного класса другим). Чтобы сделать это, предварите объявление класса ключевым словом final, что позволит неявно объявить и все его методы. Недопустимо объявлять класс одновременно как abstract и final. final class A { // ... } // Следующий класс незаконный. class В extends А { //ОШИБКА! В не может быть подклассом А // .. . } Комментарий здесь означает, что в не может наследовать А, т.к. А объявлен как final.

Слайд 31


Спасибо за внимание!
Описание слайда:
Спасибо за внимание!



Похожие презентации
Mypresentation.ru
Загрузить презентацию