Konstruktor med olika parametrar Java

Permalänk
Medlem

Konstruktor med olika parametrar Java

Låt säga att jag har en klass med en kontruktor som tar 3 parametrar och en som tar två parametrar så vill jag att de objekt som skapas efter ska få värdet på den tredje parametern från det ursprungliga objektet!

public class Exempel
{
public Exempel(int x, int y, String z)
{
}
public Exempel(int x, int y)
{
}
}

mainklass:

Exempel ex1 = new Exempel(5, 6, "röd");

Exempel ex2 = new Exempel(8,9);

Om jag tex har en getColor() så ska även ex2 visa färgen "röd". Skulle jag göra ett nytt objekt med färgen blå så skulle således nästa objekt som skapas med endast två parametrar få färgen blå.

Kort och gott, hur görs detta på ett smidigt sätt?

Visa signatur

"- Du, kan jag ringa upp dig senare. Det är någon idiot i toabåset bredvid
som sitter och svarar på allt jag säger till dig."

Permalänk

du får nog spara en temp string med senaste färgen där du skapar objekten och använda den

new Exempel(8, 9, temp);

Permalänk

Ett sätt är väl kanske att ha en private static temporär (temp) variabel som håller senaste färgen.

I Exempel(int x, int y, String z) sätts temp till z och color till z.

I Exempel(int x, int y) sätts color till temp.

Såg att perelli38 precis skrivit det.
Permalänk
Medlem

Du kan använda en statisk variabel, se t.ex. denna sida. Men det är i mitt tycke inte särskilt bra design eftersom det i princip är en global variabel som man inte har kontroll över.

Permalänk
Medlem

Spara föregåendes objekts färg där du skapar objektet?

MyObject a = null; for(int i = 0; i < 5; i++) { MyObject newObj = new MyObject(8,9); if(a != null) { newObj.Z = a.Z; } a = newObj; }

Visa signatur

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer

Permalänk
Medlem
Skrivet av lurman:

Låt säga att jag har en klass med en kontruktor som tar 3 parametrar och en som tar två parametrar så vill jag att de objekt som skapas efter ska få värdet på den tredje parametern från det ursprungliga objektet!

public class Exempel
{
public Exempel(int x, int y, String z)
{
}
public Exempel(int x, int y)
{
}
}

mainklass:

Exempel ex1 = new Exempel(5, 6, "röd");

Exempel ex2 = new Exempel(8,9);

Om jag tex har en getColor() så ska även ex2 visa färgen "röd". Skulle jag göra ett nytt objekt med färgen blå så skulle således nästa objekt som skapas med endast två parametrar få färgen blå.

Kort och gott, hur görs detta på ett smidigt sätt?

Kort och gott, objektorienterat. Förslagsvis genom factory designmönster. Vid önskemål så kan jag ge exempel. Låt inte logik ligga i objekten som objekten inte ska veta om.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

Första som kommer på tanke är nån sorts factory som håller reda på föregående skapade färg.

Permalänk
Medlem

Då uppgiften ligger ganska tidigt i en javakurs som jag läser på distans så förutsatte jag att den skulle vara ganska enkel och inte involvera arv och abstrakta klasser, även om kursen förutsatte att man läst java tidigare.
Men det var ganska längesedan jag läste det och jag var inte speciellt bra på det då heller

Hemligheten med denna uppgiften som jag tolkade det efter att ha läst vidare i boken som vi har, Java Direkt med Swing är klassvariabler, dvs en private static typ namn. Så nu sätter det första objektet färg och resten kan skapas med endast två parametrar!

Visa signatur

"- Du, kan jag ringa upp dig senare. Det är någon idiot i toabåset bredvid
som sitter och svarar på allt jag säger till dig."