Gå til innhold

Hvordan hente en metode i en annen klasse?


Anbefalte innlegg

Hei hei!

 

Sitter litt fast med en skoleoppgave jeg jobber med. Vil nødig vente til i morgen for hjelp så tyr til dere :)

 

Jeg har lagd to klasser + en main metode.

 

La oss si at klassene heter klasse1 og klasse2. Main metoden hører til klasse1, den er vel egentlig irrelevant, men iallefall. Hvordan kaller jeg på en metode jeg har lagd i klasse1 i klasse2?

 

På forhånd takk :)

Lenke til kommentar
Videoannonse
Annonse

Kommer litt an på hva du skal gjøre...?

 

Hvis du har klasse A og klasse B kan du gjøre f.eks dette:

 

I klasse A:

 

B minklasseB = new B();
minklasseB.minMetode();

 

Eventuelt om klasse B er static:

 

I klasse B:

 

public static int leggSammen(int a, int b)
{
  return a+b;
}

 

I klasse A:

 

int sum = B.leggSammen(3, 4); // returnerer 7

 

Litt vanskelig å være kort og spesifikk på et så generelt spørsmål :)

Lenke til kommentar

Hmm, beklager, er ganske ny på dette se :) Skal prøve å forklare litt nærmere :)

 

I klasseA har jeg lagd en metode som heter f.eks.:

 

public void lesTekst()

{

Scanner tastatur = new Scanner(System.in);

System.out.println("Hva er overskriften?");

overskrift = tastatur.nextLine();

System.out.println("Hvor mange ord er det i teksten?");

ord = tastatur.nextDouble();

..... osv.

}

 

 

Mens jeg har en klasseB som vil bruke denne metoden, altså informasjonen jeg har fått fra denne metoden. Jeg vet ikke om jeg forklarte det litt bedre nå :) Og det er ikke en static, jeg skal bruke det i en void, om jeg ikke har gjort feil :) Det er forøvrig ikke en main metode. Disse to klassene er ikke en main metode, går det da an å kalle på metoden som ligger i den ene klassen, slik at den kan brukes i den andre klassen?

Endret av cool_water
Lenke til kommentar

Hmm, beklager, er ganske ny på dette se :) Skal prøve å forklare litt nærmere :)

 

I klasseA har jeg lagd en metode som heter f.eks.:

 

public void lesTekst()

{

Scanner tastatur = new Scanner(System.in);

System.out.println("Hva er overskriften?");

overskrift = tastatur.nextLine();

System.out.println("Hvor mange ord er det i teksten?");

ord = tastatur.nextDouble();

..... osv.

}

 

 

Mens jeg har en klasseB som vil bruke denne metoden, altså informasjonen jeg har fått fra denne metoden. Jeg vet ikke om jeg forklarte det litt bedre nå :) Og det er ikke en static, jeg skal bruke det i en void, om jeg ikke har gjort feil :) Det er forøvrig ikke en main metode. Disse to klassene er ikke en main metode, går det da an å kalle på metoden som ligger i den ene klassen, slik at den kan brukes i den andre klassen?

 

Skal du bruke det i en void? Tror du må slå opp hva "void" betyr. Du trenger forøvrig ikke noen main-metode for å kalle metoden din, det kan gjøres fra en hvilkensomhelst metode i en hvilkensomhelst klasse som har tilgang.

 

For å kalle metoden din må du - i en eller annen klasse - gjøre

 

KlasseA kA = new KlasseA();
kA.lesTekst();

 

Du får ikke sånn umiddelbart noe resultat tilbake fordi metoden er void.

 

Men du kan hente ut verdier fra kA etter at du har kjørt lesTekst()

 

int ordCount = kA.ord;
String overskrift = kA.overskrift;

 

(Strengt tatt bør du ha get-metoder i KlasseA for å unngå å bruke de lokale variablene direkte.)

Lenke til kommentar

Har ett relatert problem, skriver her for å unngå ny tråd.

 

Hvis jeg i klasse A peker til ett objekt laget fra klasse B så får jeg feilmelding. Skal forklare nærmere.

 

peker[2][2].pris = x

// Dette fungerer glimrende

peker[2][2].visData()

// DETTE FUNGERER IKKE, SELV OM METODEN ER DER

 

Får feilmeldingen:

"Cannot find symbol : method visData()"

 

Både variabelen pris, og metoden visData er i klasse B, og peker[2][2] peker på et objekt av klasse B.

 

Har tenkt ut noen hypoteser:

-Metoden kommer ikke med under objekt-konstruksjon?

-Adgangs problemer?

 

Setter pris på alle hjelp. :)

Endret av mushin
Lenke til kommentar

Har ett relatert problem, skriver her for å unngå ny tråd.

Post koden din, gjerne i en egen tråd (det er et poeng med disse trådene vettø)

 

Jess, slapp det denne gangen, fikk det til å funke. :)

 

Hadde de 3 klassene jeg jobber med i seperate .java filer, tok dermed å samlet de i en og samme fil så forsvant problemet.

 

Syntes jeg hadde snappet opp info om at det var likegyldig om man hadde de seperat el i samme fil. Noen som har en kjapp kommentar til det?

Lenke til kommentar

Syntes jeg hadde snappet opp info om at det var likegyldig om man hadde de seperat el i samme fil. Noen som har en kjapp kommentar til det?

 

Hvis man skal operere med flere klasser i samme fil, så kan bare en av klassene være public, og filnavnet må være navnet på public-klassen (+ .java)

 

---

BalleB

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...