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..
Annonceindlæg tema
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å.
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);
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.
02. november 2004 - 23:00
#4
Jeg har vist misforstået spørgsmålet.
02. november 2004 - 23:26
#5
Hvordan vil en abstrakt metode som sætfradrag da se ud?
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.
02. november 2004 - 23:30
#7
Du kan også bruge den med: Grund g1 = new FGrund(700,30,24000); g1.sætfradrag(60);
02. november 2004 - 23:31
#8
Men bemærk: AbstraktKlasse o = new KonkretKlasse();
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.
02. november 2004 - 23:39
#10
svar men måske har mikkel fortjent dem mere end mig
02. november 2004 - 23:39
#11
PS: Måske skulle du drysse nogle public keywords ud i din kode.
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
03. november 2004 - 02:18
#13
lavet i en superclass rettelse.
Kurser inden for grundlæggende programmering