Abstract type

In programming languages, an abstract type (also known as existential types)[1] is a type in a nominative type system that cannot be instantiated directly; by contrast, a concrete type can be instantiated directly. Instantiation of an abstract type can occur only indirectly, via a concrete subtype.

An abstract type may provide no implementation, or an incomplete implementation. In some languages, abstract types with no implementation (rather than an incomplete implementation) are known as protocols, interfaces, signatures, or class types. In class-based object-oriented programming, abstract types are implemented as abstract classes (also known as abstract base classes), and concrete types as concrete classes. In generic programming, the analogous notion is a concept, which similarly specifies syntax and semantics, but does not require a subtype relationship: two unrelated types may satisfy the same concept.

Often, abstract types will have one or more implementations provided separately, for example, in the form of concrete subtypes that can be instantiated. In object-oriented programming, an abstract class may include abstract methods or abstract properties[2] that are shared by its subclasses. Other names for language features that are (or may be) used to implement abstract types include traits, mixins, flavors, roles, or type classes.[citation needed]

Abstract types may also include any number of non-abstract methods and properties, such as when implementing the Template Method Pattern which uses a mixture of invariant methods with fixed implementations and hook methods which can be overridden in concrete subclasses to provide custonised logic.

Creation

Abstract classes can be created, signified, or simulated in several ways:

  • By use of the explicit keyword abstract in the class definition, as in Java, D or C#.
  • By including, in the class definition, one or more abstract methods (called pure virtual functions in C++), which the class is declared to accept as part of its protocol, but for which no implementation is provided.
  • By inheriting from an abstract type, and not overriding all missing features necessary to complete the class definition. In other words, a child type that does not implement all abstract methods from its parent becomes abstract itself.[2][3]
  • In many dynamically typed languages such as Smalltalk, any class that sends a particular method to this, but does not implement that method, can be considered abstract. (However, in many such languages, like Objective-C, the error is not detected until the class is used, and the message returns results in an exception error message such as "Does not recognize selector: xxx" as - [NSObject doesNotRecognizeSelector:(SEL)selector] is invoked upon detection of an unimplemented method).

Examples

Java

By default, all methods in all classes are concrete, unless the abstract keyword is used. An abstract class may include abstract methods, which have no implementation. By default, all methods in all interfaces are abstract, unless the default keyword is used. The default keyword can be used to specify a concrete method in an interface.

//By default, all methods in all classes are concrete, unless the abstract keyword is used.
public abstract class Demo {
    // An abstract class may include abstract methods, which have no implementation.
    public abstract int sum(int x, int y);

    // An abstract class may also include concrete methods.
    public int product(int x, int y) { 
        return x*y; 
    }
}

//By default, all methods in all interfaces are abstract, unless the default keyword is used.
interface DemoInterface {
    int getLength(); //The abstract keyword can be used here, though is completely useless
    
    //The default keyword can be used in this context to specify a concrete method in an interface
    default int product(int x, int y) {
        return x * y;
    }
}

Usage

Abstract types are an important feature in statically typed OOP languages. Many dynamically typed languages have no equivalent feature (although the use of duck typing makes abstract types unnecessary); however traits are found in some modern dynamically-typed languages.[citation needed]

Some authors argue that classes should be leaf classes (have no subtypes), or else be abstract.[4][5]

Abstract types are useful in that they can be used to define and enforce a protocol; a set of operations that all objects implementing the protocol must support.[citation needed]

Abstract types are also an essential part of the Template Method Pattern.

See also

References

  1. ^ Mitchell, John C.; Plotkin, Gordon D.; Abstract Types Have Existential Type, ACM Transactions on Programming Languages and Systems, Vol. 10, No. 3, July 1988, pp. 470–502
  2. ^ a b "Abstract Methods and Classes (The Java Tutorials > Learning the Java Language > Interfaces and Inheritance)". Oracle.com. Retrieved 2019-08-14.
  3. ^ "Pure Virtual Functions and Abstract Classes in C++". GeeksforGeeks.org. 15 July 2014.
  4. ^ Riel, Arthur (1996). Object-Oriented Design Heuristics. Addison-Wesley Professional. p. 89. ISBN 0-201-63385-X.
  5. ^ Meyers, Scott (1996). More Effective C++. Addison-Wesley Professional. p. 258. ISBN 0-201-63371-X. Make non-leaf classes abstract

Further reading

Read other articles:

Provinsi Shinano (信濃国code: ja is deprecated , shinano no kuni) adalah provinsi lama Jepang yang dilewati jalur Tokaido dan mempunyai batas-batas wilayah yang hampir sama prefektur Nagano sekarang. Wilayah Shinano sampai sekarang dikenal sebagai Shinshū (信州code: ja is deprecated ). Provinsi Shinano dikelilingi provinsi Echigo, Etchu, Hida, Kai, Kozuke, Mikawa, Mino, Musashi, Suruga, dan Tōtōmi. Ibu kota berada di dekat kota yang sekarang bernama Matsumoto. Di zaman Sengoku, wilay...

 

Windows 7Tampilan layar dari Windows 7PembangunMicrosoftKeluarga OSMicrosoft WindowsModel sumberKode sumber tertutupDirilis kemanufakturRTM: 22 Juli 2009[1]Retail: 22 Oktober 2009[1]Rilis terbaru6.1[2] (Build 7601: Service Pack 1)[3] / 22 Oktober 2009; 14 tahun lalu (2009-10-22)[1]Metode updateWindows UpdatePlatformIA-32, x86-64Tipe KernelHybridLisensiMS-EULADidahului olehWindows VistaDigantikan olehWindows 8Situs resmiWindows 7Status dukunganDukun...

 

أهلا وسهلا بك في بوابة رواندا       اليوم هو السبت 6 أبريل 2024 02:27  |  إفراغ الكاش شقيقة بوابة جيبوتي بوابة إريتريا بوابة الجزائر بوابة بنين بوابة غينيا بوابة جنوب إفريقيا بوابة بوروندي بوابة الغابون بوابة إثيوبيا بوابة توغو بوابة ساحل العاج بوابة بوركينا ...

Drivetrain transmitting propulsion power For other uses of the word transmission, see Transmission. Gearbox redirects here. For other uses, see Gearbox (disambiguation). Hydraulic automatic transmission (cutaway view)Epicyclic gearing diagram, as used in hydraulic automatic transmissions A transmission (also called a gearbox) is a mechanical device which uses a gear set—two or more gears working together—to change the speed or direction of rotation in a machine.[1][2] Many...

 

This article is about the German village. For other uses, see Jamel (disambiguation).You can help expand this article with text translated from the corresponding article in German. Click [show] for important translation instructions. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the Englis...

 

سفر نحميامعلومات عامةجزء من عزرا -نحمياالعهد القديمHistorical books (en) الاسم الأصل סֵפֶר נְחֶמְיָה (بالhbo) الاسم المختصر Neh (بالألمانية) العنوان II Esdrae (باللاتينية) بداية النشاط القرن 5 ق.م[1] المُؤَلِّف نحميا[2] entry in abbreviations table Nehemiah[3] لديه جزء أو أجزاء Nehemiah 1 (en) Nehemiah 2 (en) Nehem...

Ghost town in New York, United States Tahawus redirects here. For the mountain, see Mount Marcy. Construction being done on top of the old McIntyre Blast Furnace near Tahawus, New York, as part of stabilization and brush cleaning for restoration of the structure (July 2007) Tahawus (also called Adirondac, or McIntyre, pronounced /təˈhɔːz/ tə-HAWZ) was a village in the Town of Newcomb, Essex County, New York, United States. It is now a ghost town situated in the Adirondack Park. Tahawus i...

 

Jakarta adalah ibu kota dan kota terbesar di Indonesia. Pencakar langit pertama di Jakarta, Sarinah, dibangun tahun 1963. Saat ini (2022), terdapat lebih dari 3.400 gedung tinggi di Jakarta, beberapa di antaranya masuk daftar di bawah, dan ada beberapa lagi yang sedang dibangun.[1] Panorama kaki langit Jakarta. Bangunan tertinggi Daftar ini berisi bangunan tertinggi di Jakarta berdasarkan ukuran tinggi standar. Tingginya mencakup puncak (spire) dan benda arsitektur tetapi tidak menghi...

 

Perses SumedangNama lengkapPersatuan Sepak bola SumedangJulukanLaskar Insun MedalBerdiri1950StadionStadion Ahmad YaniSumedang, Indonesia(Kapasitas: 10.000)KetuaAgus MuslimManajerJaka Aminulloh MuslimPelatihAam MuharamLigaLiga 3 Kostum kandang Kostum tandang Perses (atau singkatan dari Persatuan Sepakbola Sumedang) adalah sebuah klub sepak bola Indonesia yang berbasis di Kabupaten Sumedang, Jawa Barat, Indonesia. Perses Sumedang saat ini berlaga di Divisi Tiga Liga Indonesia. Supporter Laskar ...

Japanese wartime economic tool (1937–45) This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (January 2011) (Learn how and when to remove this template message) Luxury is the Enemy banner by the National Spiritual Mobilization Movement The National Spiritual Mobilization Movement (国民精神総動員運動, Kokumin Seishin Sōdōin Undō) was an organization e...

 

ХристианствоБиблия Ветхий Завет Новый Завет Евангелие Десять заповедей Нагорная проповедь Апокрифы Бог, Троица Бог Отец Иисус Христос Святой Дух История христианства Апостолы Хронология христианства Раннее христианство Гностическое христианство Вселенские соборы Н...

 

尊敬的拿督斯里莫哈末·沙布Mohamad bin Sabu国会议员2018年9月24日末沙布在五角大楼与美国国防部长詹姆斯·马蒂斯会面农业及食品工业部部长现任就任日期2022年12月3日君主最高元首苏丹阿都拉最高元首苏丹依布拉欣·依斯迈首相安华·依布拉欣副职陈泓缣(2022年至2023年)亚瑟古律(2023年至今)前任羅納建迪国防部长任期2018年5月21日—2020年2月24日君主最高元首端姑莫哈末五世...

Chiesa d'IrlandaChiesa anglicana di Holmpatrick nella contea di Dublino (Irlanda)Classificazioneanglicana FondataXVI secolo Separata daChiesa cattolica AssociazioneComunione AnglicanaComunione di Porvoo DiffusioneIrlanda, Irlanda del Nord Forma di governoepiscopale SeparazioniChiesa metodista d'Irlanda Sito ufficialewww.ireland.anglican.org/ Modifica dati su Wikidata · Manuale La Chiesa d'Irlanda ((EN) Church of Ireland, (GA) Eaglais na hÉireann) è la provincia autonoma della Comunion...

 

Поляки в Казахстане (пол. Polacy w Kazachstanie, каз. Қазақстандағы поляктар) — одна из национальных диаспор в Казахстане. Часть мировой польской диаспоры, именуемой Полония. В настоящее время в Казахстане живут 35 319 поляков по итогам переписи 2021 года (0,18 % населения республики...

 

Duke of Brittany from 1196 to 1203 Arthur IArthur of Brittany as portrayed in agenealogical roll in the British LibraryDuke of BrittanyReign1196–1203PredecessorConstanceSuccessorAlixCo-rulerConstance (1196–1201)Count of AnjouReign1199–1203PredecessorRichard I of EnglandSuccessorJohn TristanBorn29 March 1187Nantes, BrittanyDiedpresumed c. 1203 (aged 15–16)HousePlantagenetFatherGeoffrey II, Duke of BrittanyMotherConstance, Duchess of Brittany Arthur I (Breton: Arzhur 1añ[a]; Fr...

Business cycle contraction This article is about a slowdown in economic activity. For other uses, see Recession (disambiguation). Part of a series onMacroeconomics Basic concepts Aggregate demand Aggregate supply Business cycle CAGR Deflation Demand shock Disinflation Effective demand Expectations Adaptive Rational Financial crisis Growth Inflation Demand-pull Cost-push Interest rate Investment Liquidity trap Measures of national income and output GDP GNI NNI Microfoundations Money Endogenous...

 

English local election 2003 Winchester City Council election ← 2002 1 May 2003 2004 → 20 of 57 seats to Winchester City Council29 seats needed for a majority   First party Second party   Party Conservative Liberal Democrats Seats before 14 35 Seats won 10 6 Seats after 19 29 Seat change 4 6 Popular vote 12,158 11,171 Percentage 45.0 41.3   Third party Fourth party   Party Labour Independent Seats before 5 3 Seats won...

 

Season of television series Celebrity Big BrotherSeries 18Series eighteen logoPresented byEmma WillisNo. of days30No. of housemates15WinnerStephen BearRunner-upRicky NorwoodCompanion showsBig Brother's Bit On The Side No. of episodes33ReleaseOriginal networkChannel 5Original release28 July (2016-07-28) –26 August 2016 (2016-08-26)Series chronology← PreviousSeries 17Next →Series 19 Celebrity Big Brother 18 was the eighteenth series of the British reality televis...

FC Schalke 04 IINama lengkapFußballclub Gelsenkirchen-Schalke 04 e. V.JulukanDie KönigsblauenDie KnappenBerdiri1904StadionParkstadion(Kapasitas: 5,000)Dewan EksekutifJochen SchneiderAlexander JobstPeter PetersGerald AsamoahManajerTorsten FröhlingLigaRegionalliga West2021–22ke-9, Regionalliga WestSitus webSitus web resmi klub Kostum kandang Kostum tandang FC Schalke 04 II adalah tim cadangan klub sepak bola Jerman FC Schalke 04 yang berbasis di kota Gelsenkirchen. Sejarah FC Schalke ...

 

Football tournament season 2006–07 FA CupChelsea celebrating their 4th FA Cup titleTournament detailsCountryEnglandWalesTeams687Final positionsChampionsChelsea (4th title)Runner-upManchester UnitedTournament statisticsTop goal scorer(s)Frank Lampard (6 goals)← 2005–062007–08 → The 2006–07 FA Cup (known as The FA Cup sponsored by E.ON for sponsorship reasons) was the 126th staging of the world's oldest football knockout competition; the FA Cup. This season's edit...