Разлика между абстрактен клас и конкретен клас

Разлика между абстрактен клас и конкретен клас
Разлика между абстрактен клас и конкретен клас

Видео: Разлика между абстрактен клас и конкретен клас

Видео: Разлика между абстрактен клас и конкретен клас
Видео: Java Абстрактный класс VS Интерфейс 2024, Юли
Anonim

Абстрактен клас срещу конкретен клас

Повечето от популярните съвременни обектно-ориентирани езици за програмиране като Java и C са базирани на класове. Те постигат обектно-ориентирани концепции като капсулиране, наследяване и полиморфизъм чрез използване на класове. Класовете са абстрактно представяне на обекти от реалния свят. Класовете могат да бъдат конкретни или абстрактни в зависимост от нивото на внедряване на техните функционалности на метода. Конкретен клас напълно имплементира всички свои методи. Абстрактен клас може да се разглежда като ограничена версия на обикновен (конкретен) клас, където може да съдържа частично внедрени методи. Обикновено конкретните класове се наричат (само) класове.

Какво е клас бетон?

Класът по подразбиране е конкретен клас. Ключовата дума class се използва за дефиниране на класове (например в Java). И обикновено те просто се наричат класове (без прилагателното бетон). Конкретните класове изобразяват концептуалното представяне на обекти от реалния свят. Класовете имат свойства, наречени атрибути. Атрибутите се изпълняват като глобални и инстанционни променливи. Методите в класовете представляват или дефинират поведението на тези класове. Методите и атрибутите на класовете се наричат членове на класа. Обикновено капсулирането се постига чрез превръщане на атрибутите в лични, като същевременно се създават публични методи, които могат да се използват за достъп до тези атрибути. Обектът е екземпляр на клас. Наследяването позволява на потребителя да разширява класове (наречени подкласове) от други класове (наречени суперкласове). Полиморфизмът позволява на програмиста да замени обект от клас на мястото на обект от неговия супер клас. Обикновено съществителните, намерени в дефиницията на проблема, директно стават класове в програмата. И по подобен начин глаголите стават методи. Public, private и protected са типичните модификатори за достъп, използвани за класове.

Какво е абстрактен клас?

Абстрактните класове се декларират с помощта на ключова дума Abstract (напр. в Java,). Обикновено абстрактните класове, известни също като абстрактни базови класове (ABC), не могат да бъдат създадени (не може да бъде създаден екземпляр на този клас). Така че абстрактните класове са смислени само ако езикът за програмиране поддържа наследяване (способност за създаване на подкласове от разширяване на клас). Абстрактните класове обикновено представляват абстрактна концепция или обект с частична или никаква реализация. Следователно абстрактните класове действат като родителски класове, от които се извличат дъщерни класове, така че дъщерният клас ще споделя непълните функции на родителския клас и може да се добави функционалност, за да ги завърши.

Абстрактните класове могат да съдържат абстрактни методи. Подкласовете, разширяващи абстрактен клас, могат да имплементират тези (наследени) абстрактни методи. Ако дъщерният клас имплементира всички подобни абстрактни методи, той става конкретен клас. Но ако не стане, дъщерният клас също става абстрактен клас. Всичко това означава, че когато програмистът номинира клас като Abstract, той казва, че класът ще бъде непълен и ще има елементи, които трябва да бъдат завършени от наследяващите подкласове. Това е добър начин за създаване на договор между двама програмисти, който опростява задачите при разработването на софтуер. Програмистът, който пише код за наследяване, трябва да следва точно дефинициите на метода (но разбира се може да има собствена реализация).

Каква е разликата между абстрактен клас и конкретен клас?

Абстрактните класове обикновено имат частична или никаква реализация. От друга страна, конкретните класове винаги имат пълно изпълнение на поведението си. За разлика от конкретните класове, абстрактните класове не могат да бъдат създадени. Следователно абстрактните класове трябва да бъдат разширени, за да станат полезни. Абстрактните класове могат да съдържат абстрактни методи, но конкретните класове не могат. Когато абстрактен клас се разшири, всички методи (както абстрактни, така и конкретни) се наследяват. Наследеният клас може да имплементира всеки или всички методи. Ако всички абстрактни методи не са внедрени, тогава този клас също става абстрактен клас.

Препоръчано: