Абстрактни класове и интерфейси Прилики: (1) може да се наследи (2) не могат да бъдат инстанцирани (3) може да съдържа декларации на методи (4) Производният клас трябва да реализира нереализирания метод Категория: (1) Абстрактните базови класове могат да дефинират полета, свойства и реализации на методи. Интерфейсите могат да дефинират само атрибути, индексатори, събития и декларации на методи и не могат да съдържат полета. (2) Абстрактният клас е непълен клас, който се нуждае от допълнително усъвършенстване, докато интерфейсът е поведенческа норма. Персонализираните интерфейси на Microsoft винаги идват с поле, което може да докаже, че са израз на "Мога да го направя..." ” (3) Интерфейсите могат да бъдат реализирани многократно, а абстрактните класове могат да бъдат наследени само от един човек (4) Абстрактните класове са по-добре дефинирани между серия от тясно свързани класове, докато повечето интерфейси са слабо свързани класове, които всички реализират определена функция (5) Абстрактните класове са понятия, абстрахирани от серия свързани обекти, така че отразяват вътрешната общност на нещата; Интерфейсът е функционална конвенция, дефинирана да удовлетворява външни повиквания, така че отразява външните характеристики на нещата (6) Интерфейсът по същество няма конкретни характеристики на наследяване, той само обещава методи, които могат да бъдат извикани (7) Интерфейсите могат да се използват за поддръжка на обратни позиви, но наследяването няма тази функция (8) Специфичните методи, реализирани от абстрактните класове, са виртуални по подразбиране, но интерфейсните методи в класа, които реализират интерфейса, по подразбиране не са виртуални, разбира се, можете да ги обявите и за виртуални (9) Ако абстрактен клас реализира интерфейс, методът в интерфейса може да бъде преобразен към абстрактния клас като абстрактен метод без да се налага да се реализира, а методът в интерфейса може да бъде реализиран в подклас на абстрактния клас
|