Exemplaar Veldverklaring in Java

Ik ben net bezig met OOP en heb veel met Java gespeeld. Een van de problemen die ik heb, is bepalen of ik een privé-instantie voor een bepaalde klasse nodig heb. Is er een vuistregel die ik zou moeten gebruiken in termen van of ik iets een privé-instantie moet maken van niet?

Bedankt.

0

4 antwoord

Vraag jezelf af of het logisch deel uitmaakt van de status van een instantie van het object. Gaat het om het object dat geldig is gedurende de hele levensduur van het object, of is het iets dat alleen van toepassing is in de loop van een enkele methode (in welk geval het een lokale variabele zou moeten zijn)? Of is het eigenlijk van toepassing op de klasse zelf (in welk geval het statisch zou moeten zijn)?

Als u enkele voorbeelden kunt geven waarvan u niet zeker weet of niet, dan zou dat helpen.

(Merk op dat ik ervan uitga dat de keuze hier het soort variabele is - statisch, instantie of lokaal. Exemplaarvariabelen zouden vrijwel altijd altijd privé moeten zijn :)

1
toegevoegd

Als het een natuurlijk onderdeel van het object is of iets dat het object nodig heeft om een ​​bepaalde taak op regelmatige basis uit te voeren, maak het dan een attribuut. Als het een constante is, moet je er een public class-variabele van maken (of liever een constante: P). Dat wil zeggen, verklaar het "openbare statische finale w/e"

Openbare instantie variabelen worden niet zo vaak gebruikt omdat dit vaak leidt tot een rommelige code. Denk zoals eerder vermeld van de instantievariabelen (of attributen) als de staat van de objecten. Het is meestal duidelijker om de staat van de objecten te veranderen door er bewerkingen op uit te voeren in plaats van goochelen met publiek in de buurt. Succes.

1
toegevoegd

"Avoid public fields except for constants. (Many of the examples in the tutorial use public fields. This may help to illustrate some points concisely, but is not recommended for production code.) Public fields tend to link you to a particular implementation and limit your flexibility in changing your code." Controlling Access to Members of a Class

0
toegevoegd

Bij het leren van objectgeoriënteerd programmeren, beschouw het als een manier om real-world concepten als code te modelleren. Zelfstandige naamwoorden worden objecten; en de acties die worden gedaan om, op of door de zelfstandige naamwoorden worden methoden. Exemplaarvariabelen zijn de eigenschappen van die zelfstandige naamwoorden. Als u bijvoorbeeld een klasse hebt die een Auto vertegenwoordigt, is slamOnTheBreaks() een methode die het stuurprogramma zou gebruiken om de pauze in te schakelen, en een Auto heeft een aantal zitplaatsen binnen, toch? Dus een instantievariabele is int numberOfSeats; .

Denk aan instantievariabelen op een need-to-know, need-to-change basis. Door numberOfSeats openbaar te maken, zou de Driver het aantal stoelen in de auto kunnen wijzigen, wat geen enkele zin heeft. Ze hoeven alleen te weten hoeveel stoelen de auto heeft, wat ze kunnen ontdekken wanneer ze in de auto stappen, of beter gezegd, de methode openbare int getNumberOfSeats() aanroepen.

Zoals Danny al zei, het verhaal is anders voor constanten. Als een waarde een constante is, blijft deze constant gedurende de gehele duur van de uitvoering van het programma, dus bijvoorbeeld als u Stuurprogramma Bob wilt hebben als de enige Stuurprogramma voor alle Auto en Truck objecten die je aanmaakt, Bob is beter a.) toegankelijk, ook bekend als publiek, dus hij kan in elke staan en Truck (ervan uitgaande dat er geen overerving tussen Car en Truck ) en b.) niet kan worden gewijzigd.

0
toegevoegd