Avatar billede websam Nybegynder
22. juli 2006 - 17:49 Der er 7 kommentarer og
1 løsning

Abstract class ?

Hejsa,

Jeg har de sidste par dage siddet og kigget lidt på abstract class. Og kunne godt tænke mig at høre om brugen af disse. De samlignes flere steder med interfaces, men hvornår vælger man brugen af en abstract class og hvornår vælger man et interface ?

Hvad er der af fordele og ulemper ved henholdsvis den ene og den anden ?

Som jeg kan se kan jeg lave inherits fra en abstract class og ikke fra et interface mener det grund nok til at skulle vælge brugen af abstract class i forhold til et interface ?

Håber der er  nogen der vil komme med input til det ;o)

/Websam
Avatar billede nielle Nybegynder
22. juli 2006 - 17:58 #1
De vigtiske forskelle:

En klasse kan arve fra flere interfaces på samme tid. Den kan kun arve fra én anden klasse (abstract eller ej).

En abstract klasse kan have kode i nogen af sine metode. Et interface kan kun have metode-deklarationer.

En abstract klasse kan have private-erklærede metoder og felter. I et interface er alting public.
Avatar billede websam Nybegynder
22. juli 2006 - 18:13 #2
Og hvor/hvornår vælger man så det ene frem for det andet ?

/Websam
Avatar billede nielle Nybegynder
22. juli 2006 - 18:39 #3
Hvis det er en fordel for dig at have noget kode som automatisk skal arves af dem som skal implementere et interface eller arve for en abstract klasse - ja, så er det den abstracte klasse du skal vælge.

Hvis du derimod ikke har noget kode som med fordel kunne placeres i den abstracte klasse eller interfacet, ja så er der ingen grund til at vælge en abstract klasse, og du kan lige så godt foretrække at lave det med et interface.
Avatar billede websam Nybegynder
22. juli 2006 - 19:10 #4
Skal jeg så forstå det sådan at når jeg henholdsvis laver implements og inherits så er det begge dele at arve ?

/Websam
Avatar billede nielle Nybegynder
22. juli 2006 - 19:14 #5
Man taler om at "implementere et interface" og om at "nedarve en klasse". Ud fra en pragmatisk holdning er der dog ikke nogen essentiel forskel. Forskellen ligger udelukkende i hvad man kan med et interface eller en abstrack klasse.

Når man tegner de to ting i et UML diagram, så ligner de da også hinanden til forveksling. :^)
Avatar billede websam Nybegynder
22. juli 2006 - 19:19 #6
Ok så tror jeg den grundliggende viden er på feset ind på lystavlen.

Smid et svar.

/Websam
Avatar billede nielle Nybegynder
22. juli 2006 - 19:51 #7
Svar :^)
Avatar billede arne_v Ekspert
23. juli 2006 - 01:59 #8
Java og VB.NET bruger forskellig syntax for det
C++ og C# bruger samme syntax for det (selvom et interface i C++ er en klasse med ene abstrakte metoder - i C++ terminologi "pure virtual")

[og jeg synes nu ikke at de ligner hinanden i UML !]
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester