метод должен содержать исполняемый код или его нужно объявить абстрактным

Методы Java — как вызывать и использовать

метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть фото метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть картинку метод должен содержать исполняемый код или его нужно объявить абстрактным. Картинка про метод должен содержать исполняемый код или его нужно объявить абстрактным. Фото метод должен содержать исполняемый код или его нужно объявить абстрактным

метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть фото метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть картинку метод должен содержать исполняемый код или его нужно объявить абстрактным. Картинка про метод должен содержать исполняемый код или его нужно объявить абстрактным. Фото метод должен содержать исполняемый код или его нужно объявить абстрактным

метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть фото метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть картинку метод должен содержать исполняемый код или его нужно объявить абстрактным. Картинка про метод должен содержать исполняемый код или его нужно объявить абстрактным. Фото метод должен содержать исполняемый код или его нужно объявить абстрактным

В объектно-ориентированном программировании метод — это именованный блок кода, который объявляется внутри класса и может быть использован многократно. Если вы знакомы с процедурным программированием (Pascal, Basic), вспомните, что такое функция — по принципу работы у неё и метода много общего.

Хорошо написанный метод решает одну практическую задачу: находит квадратный корень из числа (как штатный метод sqrt() в Java), преобразует число в строку (метод toString()), присваивает значения полям объекта и так далее.

Новый метод сначала объявляют и определяют, затем вызывают для нужного объекта или класса.

Штатные — встроенные — методы языка работают со служебными объектами. Например, метод print в Java выводит значения в консоль. Вызывают его так:

Обратите внимание на структуру: у класса System есть поле out — поток ввода/вывода. Поле — тоже объект, и у него есть метод print(), который мы вызываем.

Ещё есть метод println(), который при выводе значений автоматически переводит каретку на следующую строку. Это избавляет от необходимости ставить «\n» в месте переноса строки.

Чтобы Java-приложение могло работать, в его базовом классе обязательно нужно объявить метод main.

Как видите, в качестве параметра main принимает массив строк, в данном случае — параметров запуска.

Объявление и определение метода в Java

Методы могут возвращать или не возвращать значения, могут вызываться с указанием параметров или без. Тип возвращаемых данных указывают при объявлении метода — перед его именем.

В примере ниже метод должен найти большее из двух целых чисел, поэтому тип возвращаемого значения — int:

В заголовке метода сначала идут модификаторы, определяющие, на каких условиях он доступен для вызова. Об этом чуть ниже. Вернёмся к заголовку: int — возвращаемый тип, maxFinder — имя метода, в скобках — параметры.

В теле метода заводим переменную max, куда потом запишем большее число. Далее сравниваем значения, фиксируем большее в max и возвращаем.

Обратите внимание, return может работать не только с одной переменной, но и с выражением. Если бы мы не сравнивали значения, а складывали, результат можно было бы вернуть без дополнительной внутренней переменной. В теле метода была бы всего одна строка:

Когда метод не должен ничего возвращать, тип возвращаемого значения указывают как void. А если методу для работы не нужны входные параметры, скобки оставляют пустыми:

Как вызвать метод в Java

Метод с модификатором public можно вызывать из любого класса, в том числе размещенного во внешнем файле. Если нужно, чтобы метод был доступен исключительно внутри своего класса, применяют модификатор private. Есть и более мягкий вариант ограничения доступа: методы с модификатором protected доступны подклассам своего класса и другим классам из того же пакета. Чем сложнее получить доступ к методу извне, тем безопаснее — ниже риск ошибок.

Статический метод в Java принадлежит классу, а не объектам (и экземплярам) класса. Поэтому его вызывают без создания экземпляра.

Для простоты мы сделали методы публичными и статическими и разместили их в главном классе программы.

Вызывают методы двумя способами — в зависимости от того, возвращают они что-то или нет. Если да, подставляем значение, куда нам нужно:

Мы вызвали maxFinder и сразу вывели результат его работы на экран. Для примера числа заданы вручную, как неименованные константы, но в реальных приложениях обычно сравнивают значения переменных.

После вызова метод управляет программой до окончания своей работы: пока в его теле не сработает оператор возврата или прерывания, либо пока не будут выполнены все находящиеся в нём инструкции.

Вызовем theWarning, который ничего не возвращает:

Этот метод обходится без помощников — делает, что должен, и передаёт управление последующему коду.

Вызов метода из другого класса

А если бы maxFinder находился в отдельном классе и был не статическим? Тогда для его вызова пришлось бы сначала создать объект класса, в котором он находится. Допустим, метод находится в классе SampleClass. Вызываем:

Статический метод вызывают через точку от имени класса — вот так:

Перегрузка методов в Java

Что, если нам нужно сравнивать не только целые числа, но и числа с плавающей точкой? Реализовать это поможет перегрузка метода. Копипастим метод maxFinder в тот же класс, заменяем типы всех задействованных значений на double:

Имя метода не меняем! Это и есть перегрузка: компилятор сам выберет, какую из версий метода использовать — в зависимости от того, значения какого типа сравниваем.

Ключевое слово this в методах Java

Ключевое слово this позволяет ссылаться на экземпляры класса: их переменные, методы и конструкторы. Используют this только внутри метода или конструктора экземпляра. Например, вот так можно связать входные параметры метода с одноименными параметрами конкретного экземпляра класса:

Ещё пример — вызов одного конструктора из другого:

Это называется «явный вызов конструктора».

Абстрактные методы в Джаве

Абстрактным называют метод, который объявлен без реализации — он не имеет ни тела, ни даже фигурных скобок. Перед именем такого метода ставят модификатор abstract:

Зачем он такой нужен? В качестве шаблона для других методов из других классов. Вот есть у нас абстрактный класс «Строение», а в нём — абстрактный метод «возвести». Реализовывать эти абстракции нужно через несколько неабстрактных классов-наследников и их методы. Пример: класс «Хижина» — метод «стройХижину», класс «Мост» — метод «стройМост» и др.

Поскольку конкретной реализации у абстрактного класса нет, экземпляры его создавать нельзя. Он — шаблон, который задаёт структуру для других классов и содержит объявления методов.

Кроме этого, рекомендуем помотреть вебинар по введению в ООП на Java, где также будет рассматриваться работа с методами и конструкторами.

метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть фото метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть картинку метод должен содержать исполняемый код или его нужно объявить абстрактным. Картинка про метод должен содержать исполняемый код или его нужно объявить абстрактным. Фото метод должен содержать исполняемый код или его нужно объявить абстрактным

В объектно-ориентированном программировании метод — это именованный блок кода, который объявляется внутри класса и может быть использован многократно. Если вы знакомы с процедурным программированием (Pascal, Basic), вспомните, что такое функция — по принципу работы у неё и метода много общего.

Хорошо написанный метод решает одну практическую задачу: находит квадратный корень из числа (как штатный метод sqrt() в Java), преобразует число в строку (метод toString()), присваивает значения полям объекта и так далее.

Новый метод сначала объявляют и определяют, затем вызывают для нужного объекта или класса.

Штатные — встроенные — методы языка работают со служебными объектами. Например, метод print в Java выводит значения в консоль. Вызывают его так:

Обратите внимание на структуру: у класса System есть поле out — поток ввода/вывода. Поле — тоже объект, и у него есть метод print(), который мы вызываем.

Ещё есть метод println(), который при выводе значений автоматически переводит каретку на следующую строку. Это избавляет от необходимости ставить «\n» в месте переноса строки.

Чтобы Java-приложение могло работать, в его базовом классе обязательно нужно объявить метод main.

Как видите, в качестве параметра main принимает массив строк, в данном случае — параметров запуска.

Объявление и определение метода в Java

Методы могут возвращать или не возвращать значения, могут вызываться с указанием параметров или без. Тип возвращаемых данных указывают при объявлении метода — перед его именем.

В примере ниже метод должен найти большее из двух целых чисел, поэтому тип возвращаемого значения — int:

В заголовке метода сначала идут модификаторы, определяющие, на каких условиях он доступен для вызова. Об этом чуть ниже. Вернёмся к заголовку: int — возвращаемый тип, maxFinder — имя метода, в скобках — параметры.

В теле метода заводим переменную max, куда потом запишем большее число. Далее сравниваем значения, фиксируем большее в max и возвращаем.

Обратите внимание, return может работать не только с одной переменной, но и с выражением. Если бы мы не сравнивали значения, а складывали, результат можно было бы вернуть без дополнительной внутренней переменной. В теле метода была бы всего одна строка:

Когда метод не должен ничего возвращать, тип возвращаемого значения указывают как void. А если методу для работы не нужны входные параметры, скобки оставляют пустыми:

Как вызвать метод в Java

Метод с модификатором public можно вызывать из любого класса, в том числе размещенного во внешнем файле. Если нужно, чтобы метод был доступен исключительно внутри своего класса, применяют модификатор private. Есть и более мягкий вариант ограничения доступа: методы с модификатором protected доступны подклассам своего класса и другим классам из того же пакета. Чем сложнее получить доступ к методу извне, тем безопаснее — ниже риск ошибок.

Статический метод в Java принадлежит классу, а не объектам (и экземплярам) класса. Поэтому его вызывают без создания экземпляра.

Для простоты мы сделали методы публичными и статическими и разместили их в главном классе программы.

Вызывают методы двумя способами — в зависимости от того, возвращают они что-то или нет. Если да, подставляем значение, куда нам нужно:

Мы вызвали maxFinder и сразу вывели результат его работы на экран. Для примера числа заданы вручную, как неименованные константы, но в реальных приложениях обычно сравнивают значения переменных.

После вызова метод управляет программой до окончания своей работы: пока в его теле не сработает оператор возврата или прерывания, либо пока не будут выполнены все находящиеся в нём инструкции.

Вызовем theWarning, который ничего не возвращает:

Этот метод обходится без помощников — делает, что должен, и передаёт управление последующему коду.

Вызов метода из другого класса

А если бы maxFinder находился в отдельном классе и был не статическим? Тогда для его вызова пришлось бы сначала создать объект класса, в котором он находится. Допустим, метод находится в классе SampleClass. Вызываем:

Статический метод вызывают через точку от имени класса — вот так:

Перегрузка методов в Java

Что, если нам нужно сравнивать не только целые числа, но и числа с плавающей точкой? Реализовать это поможет перегрузка метода. Копипастим метод maxFinder в тот же класс, заменяем типы всех задействованных значений на double:

Имя метода не меняем! Это и есть перегрузка: компилятор сам выберет, какую из версий метода использовать — в зависимости от того, значения какого типа сравниваем.

Ключевое слово this в методах Java

Ключевое слово this позволяет ссылаться на экземпляры класса: их переменные, методы и конструкторы. Используют this только внутри метода или конструктора экземпляра. Например, вот так можно связать входные параметры метода с одноименными параметрами конкретного экземпляра класса:

Ещё пример — вызов одного конструктора из другого:

Это называется «явный вызов конструктора».

Абстрактные методы в Джаве

Абстрактным называют метод, который объявлен без реализации — он не имеет ни тела, ни даже фигурных скобок. Перед именем такого метода ставят модификатор abstract:

Зачем он такой нужен? В качестве шаблона для других методов из других классов. Вот есть у нас абстрактный класс «Строение», а в нём — абстрактный метод «возвести». Реализовывать эти абстракции нужно через несколько неабстрактных классов-наследников и их методы. Пример: класс «Хижина» — метод «стройХижину», класс «Мост» — метод «стройМост» и др.

Поскольку конкретной реализации у абстрактного класса нет, экземпляры его создавать нельзя. Он — шаблон, который задаёт структуру для других классов и содержит объявления методов.

Кроме этого, рекомендуем помотреть вебинар по введению в ООП на Java, где также будет рассматриваться работа с методами и конструкторами.

Источник

BestProg

Содержание

Поиск на других ресурсах:

1. Что такое абстрактный класс? Назначение абстрактных классов. Общая форма. Ключевое слово abstract

Абстрактный класс – это класс, содержащий методы, которые не имеют реализации. Абстрактный класс создается с целью создания общего интерфейса между разными реализациями классов, которые будут производными от абстрактного класса. Абстрактный класс создается для определения некоторых общих черт производных от него классов, которые определяют конкретную его реализацию.

Запрещено (нет смысла) создавать объект абстрактного класса.

Общая форма объявления абстрактного класса следующая:

2. Что такое абстрактный метод? Общая форма

Если некоторый класс есть унаследованным от абстрактного, то этот класс должен переопределить все абстрактные методы базового абстрактного класса. В противном случае будет сгенерирована ошибка.

Общая форма объявления абстрактного метода в абстрактном классе имеет следующий вид:

В иерархии наследования (расширения) классов, абстрактные методы являются чем-то общим. Конкретные реализации абстрактных методов помещаются классах, унаследованных от абстрактных классов.

3. Схематическое изображение объявления и использования абстрактного метода в абстрактном классе. Пример

метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть фото метод должен содержать исполняемый код или его нужно объявить абстрактным. Смотреть картинку метод должен содержать исполняемый код или его нужно объявить абстрактным. Картинка про метод должен содержать исполняемый код или его нужно объявить абстрактным. Фото метод должен содержать исполняемый код или его нужно объявить абстрактным

Рисунок. Схема взаимодействия между абстрактным классом и производными классами в Java

4. Пример, который демонстрирует использование абстрактных классов

В классе Figure объявляются:

В классе Triangle() реализованы:

В результате выполнения функции main() класса UseAbstractClass будет выведен следующий результат:

5. Объяснение к примеру из пункта 4

Объяснение к примеру (см. предшествующий пункт) в виде вопросов.

5.1. Зачем в классе Figure методы Area() и ShowName() объявляются абстрактными?
5.2. Почему класс Figure объявляется абстрактным?
5.3. Почему в классе Figure методы Area() и ShowName() не содержат кода реализации (тела метода)?

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

5.4. Можно ли в абстрактном классе Figure добавлять другие не абстрактные методы?

Да, можно. Абстрактный класс может содержать не абстрактные методы (в отличие от интерфейса ).

Нет, нельзя. То есть, следующая строка

есть ошибкой компилятора Java: «Cannot instantiate the type Figure».

Метод GetArea() получает ссылку с именем f абстрактного класса Figure, который есть базовым в иерархии классов (из класса Figure унаследованы два класса Triangle и Circle).

Затем по ссылке вызывается метод Area() в строке

В функции main() при вызове метода GetArea()

Точно таким же способом связывается экземпляр f2 класса Circle с обобщенной ссылкой f в методе GetArea()

6. Можно ли в абстрактном классе объявлять методы, которые имеют реализацию (тело)?

Да, можно. Абстрактный класс допускает реализацию не абстрактных методов.

7. Пример создания иерархии абстрактных классов

Пример. Ниже приведен пример иерархии абстрактных классов

Использование класса C может быть, например следующим

8. Может ли абстрактный класс не содержать абстрактных методов?

Да, может. Это необходимо в случаях, когда абстрактные методы в классе не нужны, но нужно запретить создание экземпляров этого класса.

9. Какие отличия между использованием абстрактных классов и использованием интерфейсов?

Между абстрактными классами и интерфейсами существуют следующие отличия:

10. Преимущества использования абстрактных классов

Использование абстрактных классов дает следующие преимущества:

Источник

Абстрактные классы Java и методы

Это класс, который не может быть создан, то есть вы не можете создавать новые экземпляры абстрактного класса. Целью является функционирование в качестве базы для подклассов.

Объявление

Нужно добавить ключевое слово abstract в объявление класса:

Теперь вы не можете создавать экземпляры MyAbstractClass. Таким образом, следующий код больше не действителен:

Если вы попытаетесь скомпилировать код выше, компилятор сгенерирует ошибку, сказав, что вы не можете создать экземпляр MyAbstractClass, потому что это абстрактный класс.

Абстрактные методы

Вы объявляете их, добавляя ключевое слово abstract перед объявлением метода:

Информация об абстрактных методах:

Вот пример подкласса:

Обратите внимание, как MySubClass должен реализовывать абстрактный метод abstractMethod() из своего абстрактного суперкласса MyAbstractClass.

Единственный раз, когда подкласс абстрактного класса не вынужден реализовывать все абстрактные методы своего суперкласса – когда также является абстрактным.

Цель – функционировать как базовые классы, которые могут быть расширены подклассами для создания полной реализации. Например, представьте, что определенный процесс требует 3 шага:

Если шаги до и после действия всегда одинаковы, трехэтапный процесс может быть реализован в абстрактном суперклассе с помощью следующего кода:

Обратите внимание, как метод action() является абстрактным. Подклассы MyAbstractProcess теперь могут расширять MyAbstractProcess и просто переопределять метод action().

Когда вызывается метод process() подкласса, выполняется полный процесс, включая stepBefore() и stepAfter() абстрактного суперкласса и метод action() подкласса.

Конечно, MyAbstractProcess не должен был быть абстрактным, чтобы функционировать как базовый класс. Метод action() также не должен быть абстрактным. Вы могли бы просто использовать обычный класс. Однако, создав метод для реализации абстрактного, а значит и класса, вы четко дадите понять его пользователям, что он не должен использоваться как есть. Вместо этого его следует использовать в качестве базового класса для подкласса, а абстрактный метод должен быть реализован в подклассе.

В приведенном выше примере не было реализации по умолчанию для метода action(). В некоторых случаях ваш суперкласс может ее иметь. Тогда вы можете не делать метод абстрактным. Вы все равно можете сделать суперкласс абстрактным, даже если он не содержит абстрактных методов.

Вот более конкретный пример, который открывает URL-адрес, обрабатывает его и впоследствии закрывает соединение с URL-адресом.

Обратите внимание, что processURLData() является абстрактным методом, а URLProcessorBase – абстрактным классом. Подклассы URLProcessorBase должны реализовывать processURLData(), потому он абстрактный.

Подклассы URLProcessorBase могут обрабатывать данные, загруженные с URL-адресов, не беспокоясь об открытии и закрытии сетевого подключения к URL-адресу. Это делается с помощью URLProcessorBase. Подклассам нужно только беспокоиться об обработке данных из InputStream, переданных методу processURLData(). Это облегчает реализацию классов, обрабатывающих данные из URL.

Вот пример подкласса:

Обратите внимание, как подкласс реализует только метод processURLData(), и ничего более. Остальной код унаследован от суперкласса URLProcessorBase.

Вот пример того, как использовать класс URLProcessorImpl:

Вызывается метод process(), который реализован в суперклассе URLProcessorBase. Этот метод, в свою очередь, вызывает processURLData() в классе URLProcessorImpl.

Шаблона проектирования Template

Пример, который я показал вам выше с классом URLProcessorBase, на самом деле является примером шаблона проектирования Template. Он обеспечивает частичную реализацию некоторого процесса, который подклассы могут выполнять при расширении базового класса Template.

Источник

Абстрактные классы в ООП на PHP

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

Для того, чтобы объявить класс абстрактным, нужно при его объявлении написать ключевое слово abstract :

Попытка создать объект класса User вызовет ошибку:

Абстрактные методы

Давайте попробуем на практике. Пусть предполагается, что все потомки класса User должны иметь метод increaseRevenue ( увеличить доход ).

Этот метод должен брать текущий доход пользователя и увеличивать его на некоторую величину, переданную параметром.

Фишка тут в том, что абстрактный метод класса User заставляет программиста реализовывать этот метод в потомках, иначе PHP выдаст ошибку. Таким образом вы, или другой программист, работающий с вашим кодом, никак не сможете забыть реализовать нужный метод в потомке.

Итак, давайте попробуем на практике. Добавим абстрактный метод increaseRevenue в класс User :

Давайте теперь напишем реализацию метода increaseRevenue в классе Employee :

Проверим работу нашего класса:

Некоторые замечания

При наследовании от абстрактного класса, все методы, помеченные абстрактными в родительском классе, должны быть определены в дочернем классе.

Объявления методов также должны совпадать: количество обязательных параметром должно быть одинаковым. Однако класс-потомок может добавлять необязательные параметры, которые не были указаны при объявлении метода в родителе.

Практика

Пусть нам необходимо работать с геометрическими фигурами, например, с квадратами, прямоугольниками, треугольниками и так далее. Пусть каждая фигура будет описываться своим классом, при этом мы хотим сделать так, чтобы каждый класс имел метод для вычисления площади и метод для вычисления периметра фигуры.

Почему класс Figure абстрактный: потому что он не описывает реально существующую геометрическую фигуру и, соответственно, объект этого класса мы не будем создавать.

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

Зачем нам вообще нужен класс Figure : чтобы наследовать от него и таким образом заставить всех наследников реализовать указанные методы.

Итак, напишем реализацию класса Figure :

Пусть теперь мы хотим создать класс Quadrate для описания геометрической фигуры квадрат. Как известно, у квадрата все стороны равны, поэтому для описания квадрата нам нужно задать только его ширину.

Давайте теперь унаследуем наш класс Quadrate от класса Figure :

Сейчас наша реализация класса Quadrate не рабочая, так как мы не написали реализацию абстрактных методов родителя.

Давайте сделаем это:

Давайте создадим квадрат со стороной 2 и найдем его площадь и периметр:

Усложним

Этот метод уже будет не абстрактный, а иметь реализацию, и все потомки смогут воспользоваться этим методом.

Почему мы можем написать реализацию этого метода прямо в классе Figure : потому что этот метод будет одинаковым для всех потомков.

Итак, добавим наш метод:

Применим наш метод:

Источник

Абстрактные классы в PHP

В этом уроке, мы обсудим абстрактный класс и его особенности, связанные с объектно-ориентированными методами в PHP. Кроме того, мы изучим реализацию абстрактного класса разобрав несколько примеров.

Что такое абстрактные классы и методы в PHP?

Абстрактные классы — это классы, в которых хотя бы один метод является абстрактным. Методы, объявленные абстрактными, несут, по существу, лишь описательный смысл (имеют только имя и аргументы) и не имеют тела. Таким образом, мы не можем создавать объекты из абстрактных классов. Вместо этого нам нужно создать дочерние классы, которые добавляют код в тела методов и используют эти дочерние классы для создания объектов.

Объявление абстрактных классов

Чтобы объявить абстрактный класс, нам нужно использовать ключевое слово abstract перед именем класса:

Синтаксис

Объявление абстрактных методов

Когда вы добавляете ключевое слово abstract к объявлению метода, он становится абстрактным методом. И помните, абстрактные методы не имеют тела. Поэтому фигурные скобки <> не используются.

Пример

Правила абстракции

Когда дочерний класс наследуется от абстрактного класса, применяются следующие правила:

Видимость абстрактного методаВидимость дочернего метода
publicpublic
protectedprotected или public, но не private

Не абстрактные методы в абстрактном классе

Неабстрактные методы могут быть определены в абстрактном классе. Эти методы будут работать так же, как обычные методы наследования.

Любой класс даже с одним абстрактным методом должен быть объявлен абстрактным. Но абстрактный класс также может иметь неабстрактные методы, к которым дочерние классы могут обращаться и использовать их напрямую, не переопределяя их.

Давайте расширим приведенный выше пример и включим в наш класс неабстрактный метод myMethod2:

Пример

Примечание: В этом основное отличие абстрактных классов от интерфейсов. Абстрактные классы могут иметь реальные методы, а интерфейсы могут иметь только объявления методов.

Пример абстрактного класса в PHP ООП

Родительский абстрактный класс:

Пример

Как создать дочерние классы из абстрактного класса?

Примечание: Дочерние классы, которые наследуются от абстрактных классов, должны добавлять тела к абстрактным методам.

Давайте создадим дочерние классы и определим в них абстрактный метод, унаследованный от родителя, greet():

Пример

Теперь мы можем создавать объекты из дочерних классов:

Пример

Полный код рассмотренного примера абстрактного класса:

Пример

Результат выполнения кода:

Заключение

Абстрактные классы важны, когда вам строго нужны дочерние классы для определения метода. В большинстве случаев абстракция используется, когда родительский класс наследуется несколькими дочерними классами, которые имеют почти одинаковое поведение. Кликните здесь, чтобы попрактиковаться в этой теме. В следующем уроке мы вернемся к концепции абстракции, но на этот раз с использованием интерфейса.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *