~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ DE79E4C03926FA86306599CD92ADA313__1708525080 ✰
Заголовок документа оригинал.:
✰ Abstract type - Wikipedia ✰
Заголовок документа перевод.:
✰ Абстрактный тип — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Abstract_type ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/de/13/de79e4c03926fa86306599cd92ada313.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/de/13/de79e4c03926fa86306599cd92ada313__translat.html ✰
Дата и время сохранения документа:
✰ 24.06.2024 07:16:50 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 21 February 2024, at 17:18 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Абстрактный тип — Википедия Jump to content

Абстрактный тип

Из Википедии, бесплатной энциклопедии

В языках программирования абстрактный тип (также известный как экзистенциальный тип ). [1] — это тип в системе номинативных типов , экземпляр которого не может быть создан напрямую; напротив, конкретный тип может быть создан напрямую. Создание экземпляра абстрактного типа может происходить только косвенно, через конкретный подтип .

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

Часто абстрактные типы имеют одну или несколько реализаций, предоставляемых отдельно, например, в форме конкретных подтипов, экземпляры которых могут быть созданы. В объектно-ориентированном программировании абстрактный класс может включать абстрактные методы или абстрактные свойства. [2] которые являются общими для его подклассов. Другие названия языковых функций, которые используются (или могут использоваться) для реализации абстрактных типов, включают в себя типажи , примеси , разновидности , роли или классы типов . [ нужна цитата ]

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

Создание [ править ]

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

  • С помощью явного ключевого слова abstract в определении класса, как в Java , D или C# .
  • Путем включения в определение класса одного или нескольких абстрактных методов (называемых чистыми виртуальными функциями в C++ ), которые, как объявлено, класс принимает как часть своего протокола, но для которых не предусмотрена реализация.
  • Наследуя . абстрактный тип и не переопределяя все недостающие функции, необходимые для завершения определения класса Другими словами, дочерний тип, который не реализует все абстрактные методы своего родителя, сам становится абстрактным. [2] [3]
  • Во многих динамически типизированных языках, таких как Smalltalk , любой класс, который отправляет определенный метод в this , но не реализует этот метод, может считаться абстрактным. (Однако во многих таких языках, таких как Objective-C , ошибка не обнаруживается до тех пор, пока не будет использован класс, и сообщение возвращает результат в виде сообщения об ошибке исключения, такого как «Не распознает селектор: xxx», как - [NSObject doesNotRecognizeSelector:(SEL)selector] вызывается при обнаружении нереализованного метода).

Примеры [ править ]

Ява [ править ]

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

//По умолчанию все методы во всех классах являются конкретными, если не используется ключевое слово Abstract. 
  public   Abstract   class   Demo   { 
     // Абстрактный класс может включать в себя абстрактные методы, не имеющие реализации. 
      публичная   абстрактная   int   сумма  (  int   x  ,   int   y  ); 

      // Абстрактный класс может также включать в себя конкретные методы. 
      public   int   product  (  int   x  ,   int   y  )   {  
         return   x  *  y  ;  
      } 
 } 

 //По умолчанию все методы во всех интерфейсах являются абстрактными, если не используется ключевое слово default. 
  интерфейс   DemoInterface   { 
     int   getLength  ();    //Здесь можно использовать ключевое слово абстрактное, хотя оно совершенно бесполезно 
    
     //Ключевое слово по умолчанию можно использовать в этом контексте для указания конкретного метода в интерфейсе 
     по умолчанию   int   product  (  int   x  ,   int   y  )   { 
         return   x   *   y  ; 
      } 
 } 

Использование [ править ]

Абстрактные типы — важная особенность статически типизированных языков ООП. Многие динамически типизированные языки не имеют эквивалентной функции (хотя использование утиной типизации делает ненужными абстрактные типы); однако черты встречаются в некоторых современных динамически типизированных языках. [ нужна цитата ]

Некоторые авторы утверждают, что классы должны быть листовыми (не иметь подтипов) или быть абстрактными. [4] [5]

Абстрактные типы полезны тем, что их можно использовать для определения и реализации протокола ; набор операций, которые должны поддерживать все объекты, реализующие протокол. [ нужна цитата ]

Абстрактные типы также являются важной частью шаблона метода шаблона .

См. также [ править ]

Ссылки [ править ]

  1. ^ Митчелл, Джон К.; Плоткин, Гордон Д.; Абстрактные типы имеют экзистенциальный тип , Транзакции ACM в языках и системах программирования, Vol. 10, № 3, июль 1988 г., стр. 470–502.
  2. ^ Перейти обратно: а б «Абстрактные методы и классы (Учебные пособия по Java > Изучение языка Java > Интерфейсы и наследование)» . Oracle.com . Проверено 14 августа 2019 г.
  3. ^ «Чистые виртуальные функции и абстрактные классы в C++» . GeeksforGeeks.org . 15 июля 2014 г.
  4. ^ Риэль, Артур (1996). Эвристика объектно-ориентированного проектирования . Аддисон-Уэсли Профессионал. п. 89. ИСБН  0-201-63385-Х .
  5. ^ Мейерс, Скотт (1996). Более эффективный C++ . Аддисон-Уэсли Профессионал. п. 258 . ISBN  0-201-63371-Х . Сделать неконечные классы абстрактными

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: DE79E4C03926FA86306599CD92ADA313__1708525080
URL1:https://en.wikipedia.org/wiki/Abstract_type
Заголовок, (Title) документа по адресу, URL1:
Abstract type - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)