Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемmsimuni.wdfiles.com
2 Наследование time time_with_sec В чем преимущества наследования? Наследование кода – поля, метод inc Появилось два класса с которыми точно можно обращаться одинаково – inc(), print() – Наследование интерфейса
3 Пример void f(time t) { t.print(); t.inc(); t.print(); } time t = new time(8, 30); f(t); time t1 = new time_with_sec(8, 40, 15); f(t1); Мы можем писать код, который работает для разных типов (и для time и для time_with_sec) Называется полиморфизм Это главное зачем нужно наследование Это благодаря виртуальным функциям
4 Еще пример time [] a = new time [10]; a[0] = new time(8, 30); a[1] = new time_with_sec (8, 40, 15); … for (int i=0; i
5 Фигуры Фигура – Ромб – Круг – Треугольник abstract class Shape { protected int x, y; public abstract double area(); public abstract double perim(); class Rhomb: Shape { методы для площади и периметра } class Circle: Shape { методы для площади и периметра }
6 Абстрактные классы и методы abstract метод – его надо переопределить (А virtual метод – его можно переопределить) abstract класс – у него надо определить производный класс Нельзя создать обьект абстрактного класса object – базовый класс для всех обьектов
7 Интерфейсы примерно: абстрактный класс, в котором есть только абстрактные методы и больше ничего public interface IShape { double Area(); double Perim(); } abstract и public как бы добавляются автоматически class Rhomb : IShape { …
8 Зачем интерфейсы? Зачем интерфейсы, если есть абстрактные классы? Множественное наследование Car - автомобиль Ship – корабль Amphibia : Car, Ship – так нельзя.. Если автомобтль и корабль – интерфейсы - ОК
9 Создание обьектов и полиморфный код может ли конструктор быть виртуальным? – нет… конструктор не может вызываться в полиморфном коде. А иногда все-таки хочется создать код, который – полиморфный – все-таки создает обьекты Пример IShape [] a = new IShape[10]; Задача – скопировать в массив b. Но мы не знаем, что там находиться! Как вызывать new?
10 clone public interface IShape { double Area(); double Perim(); IShape Clone(); } class Rhomb : IShape { public IShape Clone() { return new Rhomb(x, y, h, w); } это шаблон Prototype
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.