hejsan! Det finns bara ett ställe där de kan initieras om de inte skall initieras till samma värde för alla objekt, och det är i konstruktorn. Nja, man kan allt ha initialisering vid deklarationen också, men i det fallet är det knappast meningsfullt att initialisera dem igen till nya konstanter. Andreas skrev: <b>man kan allt ha initialisering vid deklarationen också</b> Jag föredrar att lägga i konstruktorn. Vara konsekvent och göra detta med samtliga variabler. Håller helt med, med ett litet undantag... Håller med... Håller med...Vart i ett javaprogram bör man ha instansvariabler?
Jag undrar var någonstans i ett javaprogram man bör ha sina instansvariabler.
ska de skapas före konstruktorn eller i konstruktorn? har sett båda varianterna.
public class Test(){
private String namn="Olle"; ska de deklareras och initieras här eller i konsruktorn, dvs bara
private String tele ="22222"; deklareras här och initieras i konstruktorn?
Test(){
namn ="Olle"; eller ska de initieras här och deklareras innan konstruktorn
tele="33444";
}
}
Förvirrad??????Sv: Vart i ett javaprogram bör man ha instansvariabler?
Sv:Vart i ett javaprogram bör man ha instansvariabler?
Dvs i klassen ovan kommer namn först att initialiseras till "Olle" och sedan i konstruktorn initialiseras till "Olle" igen. Pss är tele först "2222" och sedan "33444".
Hur man gör är litet tycke och smak, men jag tycker att en vettig variant är att vid deklarationen ge variablerna defaultvärden (om man inte gör det så får de defaultvärden enligt Java) och sedan i konstruktorn ge värden enligt de argument som konstruktorn tar.
Pss får man enklare underhåll om klassen dessutom har flera olika konstruktorer.
/AndreasSv: Vart i ett javaprogram bör man ha instansvariabler?
Jo, men det är ingen större mening med det om medlemsvariablerna skall få olika värden i olika objekt. Den varianta initieringen är bara meningsfull i konstruktorn.
Per skrev: <b>om de inte skall initieras till samma värde för alla objekt</b>Sv: Vart i ett javaprogram bör man ha instansvariabler?
Även om värdet är samma oavsett vilken konstruktor du anropar.
public class Person(){
private String namn;
private String tele;
public Person() {
this("", "")
}
private Person(name, tele) {
this.namn = name;
this.tele = tele;
}
Sv:Vart i ett javaprogram bör man ha instansvariabler?
Om man skriver ett SWING program, som kanske innehåller en hög JLabels, JTextField osv. som ska ha unika namn. Då tycker jag det blir både tydligare och mer lättläst om man instansierar dem direkt. Fördelen blir då också att konstruktorn innehåller mindre kod och detta fall ska man ju inte ändra värdena på instansvariablerna.
KristinaSv: Vart i ett javaprogram bör man ha instansvariabler?
Men, det jag tycker faller bort i diskutionen är att:
Antingen använder man sig av konstruktorer där man har möjlighet att använda sig av parametrar
för att instansiera objektet.
Tex:
public class Test(){
private String namn=null;
private String tele =null;
public Test(){
}Sv: Vart i ett javaprogram bör man ha instansvariabler?
Men, det jag tycker faller bort i diskutionen är att:
Antingen använder man sig av konstruktorer där man har möjlighet att använda sig av parametrar
för att instansiera objektet.
Tex:
public class Test(){
private String namn=null;
private String tele =null;
public Test(){
}