Avatar billede bobske Nybegynder
02. november 2004 - 22:54 Der er 12 kommentarer og
1 løsning

Kald af metode i subclass

Er det muligt at kalde en metode i Main hvis man har lavet et objekt i en superclass, og så vil bruge en metode fra subclassen? og hvordan?
EKS.:

// Class Grund
    class Grund  {
    int kvm, kvmpris, byggeret;
   
    Grund (int kvm, int kvmpris,int  byggeret){
        this.kvm = kvm; this.kvmpris = kvmpris; this.byggeret = byggeret;
        }
    int vurdering(){return (kvm * kvmpris + byggeret); }
    }
// SubClass Forurenet grund -------------------------
    class FGrund extends Grund {
        private int  fradrag;
       
        FGrund (int kvm, int kvmpris,int byggeret, int fradrag){
            super(kvm,kvmpris,byggeret);
            this.fradrag = fradrag;
           
        }
        int vurdering(){return ((kvm * kvmpris + byggeret)- fradrag); }
       
        void sætfradrag(int fradrag){
            this.fradrag = fradrag;
       
            }
        }

//Main

Grund g1 = new Grund(700,30,24000);

Hvordan bruger jeg så metoden sætfradrag i subclassen Fgrund?
Hvis metoden var i Grund, ville jeg skrive:
g1.sætfradrag(60);
Men nu er den i subclass

Håber I forstår spørgsmålet..
Avatar billede arne_v Ekspert
02. november 2004 - 22:57 #1
En super klasse kan ikke kalde en metode som kun er i en sub klasse.

Men du kan lave en abstrakt metode i din super klasse og kalde den. Og så
implementere den i din sub klasse. Din super klasse bliver dog til en abstrakt
klasse så.
Avatar billede mikkelbm Nybegynder
02. november 2004 - 22:59 #2
Hvis du vil have adgang til sætfradrag er det vel bare:

FGrund g = new FGrund(30, 300, 240000, 3400);
g.sætfradrag(100);
Avatar billede mikkelbm Nybegynder
02. november 2004 - 23:00 #3
Men det er rigtigt som Arne skriver, at hvis du vil kalde den på Ground, skal du have en abstrakt metode, som du implementere i subclass.
Avatar billede arne_v Ekspert
02. november 2004 - 23:00 #4
Jeg har vist misforstået spørgsmålet.
Avatar billede bobske Nybegynder
02. november 2004 - 23:26 #5
Hvordan vil en abstrakt metode som sætfradrag da se ud?
Avatar billede arne_v Ekspert
02. november 2004 - 23:29 #6
abstract class Grund  {
    int kvm, kvmpris, byggeret;
 
    Grund (int kvm, int kvmpris,int  byggeret){
        this.kvm = kvm; this.kvmpris = kvmpris; this.byggeret = byggeret;
        }
    int vurdering(){return (kvm * kvmpris + byggeret); }
    abstract void sætfradrag(int fradrag);
    }

den kan andre metoder i Grund så kalde selvom metoden ikke eksisterer i Grund.
Avatar billede arne_v Ekspert
02. november 2004 - 23:30 #7
Du kan også bruge den med:

Grund g1 = new FGrund(700,30,24000);
g1.sætfradrag(60);
Avatar billede arne_v Ekspert
02. november 2004 - 23:31 #8
Men bemærk:

AbstraktKlasse o = new KonkretKlasse();
Avatar billede bobske Nybegynder
02. november 2004 - 23:37 #9
ok tak for hjælpen, så blev jeg da lidt klogere :)

Bare fyr op for noget svar hvis du vil have point.
Avatar billede arne_v Ekspert
02. november 2004 - 23:39 #10
svar

men måske har mikkel fortjent dem mere end mig
Avatar billede arne_v Ekspert
02. november 2004 - 23:39 #11
PS: Måske skulle du drysse nogle public keywords ud i din kode.
Avatar billede bobske Nybegynder
03. november 2004 - 02:16 #12
Problemet var ikke at få adgang til sætfradrag, mere om det kunne lade sig gøre via et objekt lavet i en subclass. Det kunne det så ikke direkte.

ses på hatten
Avatar billede bobske Nybegynder
03. november 2004 - 02:18 #13
lavet i en superclass rettelse.
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