Avatar billede aslan Nybegynder
02. juni 2006 - 11:43 Der er 4 kommentarer

Selv styre tilgængelige metoder i sub-klasse

Jeg har klasse der arver fra JTextField. I denne klasse overskriver jeg metoder så jeg kan tilpasse den til systemet. Man kan bl.a sætte de karakterer den skal acceptere eller antal karakterer det skal være muligt at skrive i den. Denne klasse kan så både benyttes af mig og andre i firmaet.

Mit spørgsmål går så på hvordan jeg kan gøre de metoder denne klasse arver fra JTextField private så jeg selv kan styre hvilke metoder der må benyttes i denne klasse og hvilke der ikke må.

Hvis jeg f.eks ikke vil give lov til at man kan kalde setFont(Font f) på denne klasse, hvordan kan jeg så forhindre det?
Avatar billede mikkelbm Nybegynder
02. juni 2006 - 12:16 #1
Du overskriver metoden, og undlader at gøre noget i den. Og kalder super.setFont (font) der hvor du selv vil sætte fonten.

Du kan ikke gøre visibility ringere i nedarvninger. Det vil sige, at du ikke kan skjule en superklasses metoder.
Avatar billede aslan Nybegynder
02. juni 2006 - 12:50 #2
mikkelbm

Det jeg mente var at det slet ikke skal være muligt at se at der er en setFont metode i min sub-klasse. Spørgsmålet er om man kan designe sig ud af det her.
Avatar billede mikkelbm Nybegynder
02. juni 2006 - 12:58 #3
Og det kan du mig bekendt ikke, når du nedarver. Så skal du pakke det ind på en anden måde.
Avatar billede arne_v Ekspert
02. juni 2006 - 13:47 #4
det kan du ikke

en helt fundamental egenskab ved arv er at man kan:

SuperKlasse o = new SubKlasse();

og det hænger ikke godt sammen med at SubKlasse fjerner nogle metoder.

Den pæne måde er at encapsulate og delegate fremfor at extende, men den kan
måske godt være lidt tung for en Swing klasse.

Den mindre pæne måde er at overskrive med en public metode som thrower
en grim RuntimeException.
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
Kurser inden for grundlæggende programmering

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