Abstraktsed klassid ja liidesed Sarnasused: (1) võib pärida (2) ei saa instantsierida (3) võib sisaldada meetodi deklaratsioone (4) Tuletatud klass peab rakendama rakendamata meetodi Kategooria: (1) Abstraktsed baasklassid võivad määratleda välju, omadusi ja meetodi rakendusi. Liidesed saavad määratleda ainult atribuute, indekseerijaid, sündmusi ja meetodi deklaratsioone ning ei tohi sisaldada välju. (2) Abstraktne klass on mittetäielik klass, mis vajab täiendavat täpsustamist, samas kui liides on käitumuslik norm. Microsofti kohandatud liidestel on alati võimekas väli, mis tõestab, et need väljendavad "Ma suudan seda..." ” (3) Liideseid saab rakendada mitu korda ning abstraktseid klasse saab pärida ainult üks inimene (4) Abstraktsed klassid on rohkem määratletud tihedalt seotud klasside vahel, samas kui enamik liidestest on lõdvalt seotud klassid, mis kõik täidavad kindlat funktsiooni (5) Abstraktsed klassid on mõisted, mis on abstraktsed seotud objektide jaast, nii et need peegeldavad asjade sisemist ühisust; Liides on funktsionaalne konventsioon, mis on defineeritud väliste kutsete rahuldamiseks, seega peegeldab see asjade väliseid omadusi (6) Liidesel puuduvad põhimõtteliselt mingid eripärandumise omadused, see lubab ainult meetodeid, mida saab kutsuda (7) Liideseid saab kasutada tagasikõnede toetamiseks, kuid pärandamisel seda funktsiooni ei ole (8) Abstraktsete klasside poolt rakendatud konkreetsed meetodid on vaikimisi virtuaalsed, kuid liidese meetodid, mis liidese implementeerivad, on vaikimisi mitte-virtuaalsed, loomulikult saab neid ka virtuaalseteks kuulutada (9) Kui abstraktne klass rakendab liidest, saab liidese metoodiku kaardistada abstraktse klassiga abstraktse meetodina ilma seda rakendamata ning liidese meediks saab olla teostatud abstraktse klassi alamklassis
|