Just nu i M3-nätverket
Gå till innehåll

abstract method


lakris-loppan

Rekommendera Poster

lakris-loppan

Hej!

Jag har försökt läsa mig till hur det fungerar med det här med abstracta metoder i Java och tänkte bara höra om jag fattat det hela rätt...?

Om jag i föräldrarklassen, def. en metod som heter print och som är abstract, räcker det da att jag skriver sa här?:

abstract void print();

 

och sen när barnet till föräldern vill använda denna metod, sa skriver jag som vanligt:

public void print()

{

System.out.println("det som skall skrvas ut");

System.out.println("det som skall skrvas ut");

System.out.println("det som skall skrvas ut");

System.out.println("det som skall skrvas ut");

}

 

I och med att jag vill skrva ut vissa attribut som min barnklass ärvt, maste jag ange dem här precis som attribut i den aktuella klassen...?

 

Hade varit helt kanon om nagon därute visste hur det ligger till och om jag är pa fel spar, kanske kunde ge en liten vink hur det här hänger samman. Tycker nämligen att abstract void print(); känns lite meningslöst att skriva, men det är väl nödvändigt för att jag skall kunna skriva ut attribut fran klassen i barnklassen, eller?

 

/l-l

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon
räcker det da att jag skriver sa här?:

abstract void print();

Svar ja!

Tycker nämligen att abstract void print(); känns lite meningslöst att skriva,

När du anger en metod som abstract i förälderna så måste alla barn implementera metoden. Den tomma definitionen används för att definiera programmeringsgränssnittet för alla ärvda klasser.

 

Länk till kommentar
Dela på andra webbplatser

lakris-loppan

Ok, det verkar ju ända lite logsikt. :-) och jag antar att man kan ha mer nytta av det när man slänger ihop större applikationer och använder fler/andra metoder?

Tack för hjälpen!

/l-l

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Ett belysande exempel är följande:

 

Abstrakt huvudklass: GraphicObject

-- Abstrakt metod: Draw

 

Subklass: Circle

Subklass: Rectangle

 

Det är logiskt att alla GraphicObject har en metod Draw, därför skall den ligga i huvudgränssnittet. Däremot skiljer sig det markant hur en cirkel och en rektangel ritas, så implementationen av metoden läggs i respektiver subklass.

 

Däremot vill du kanske i Circle ha en metod GetRadius(), men denna hör ju inte hemma i Rectangle så den deklareras som vanligt på subklassnivå.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...