Přetěžování konstruktoru v Javě

Jenda

Přetěžování konstruktoru v Javě
« kdy: 07. 10. 2012, 19:01:15 »
Dobry den, mam v zadani vytvorit v tride Circle dva konstruktory.

Jeden s dvěma parametry:

Kód: [Vybrat]
public Circle(Vertex2D center, double radius) {
        this.center = center;
        this.radius = radius;
    } //kde Vertex2D center je tvoren dvema double ve tride Vertex2D. Konstruktor --> public Vertex2D(double x, double y)

No a druhy je konstruktor bez parametru,ale ma volat předchozí konstruktor s parametry a předá mu potřebné konstanty. Ja to napsal takto:

Kód: [Vybrat]
public Circle() {
        this((0, 0), 1);
        //nebere to ani: this(Vertex2D(0, 0), 1); ... v tomto pripade to rve ze nemuze najit metodu Vertex2D(int, int)
    }

Nicmene mi to rve, ze za prvni nulou ma byt zavorka. Jak mam tedy volat ten predchozi konstruktor? Dekuji
« Poslední změna: 07. 10. 2012, 20:53:26 od Petr Krčmář »


cira

Re:Pretezovani konstruktoru
« Odpověď #1 kdy: 07. 10. 2012, 19:11:38 »
nevim nevim, vetsina jazyku  co znam chce klicove slovo new, ktery rika ze se vytvari nova instance a vola se konstruktor..

volani this()

co to je za jazyk, at se priucim?


Jenda

Re:Pretezovani konstruktoru
« Odpověď #2 kdy: 07. 10. 2012, 19:21:28 »
Je to Java a samozrejme mate pravdu. Ja v tom furt hledal nejakou slozitost a na new jsem zapomnel. Dekuji

Re:Přetěžování konstruktoru v Javě
« Odpověď #3 kdy: 08. 10. 2012, 07:08:08 »
Áno, takto by to malo fungovať:
Kód: [Vybrat]
public Circle(Vertex2D center, double radius) {
        this.center = center;
        this.radius = radius;
    } //kde Vertex2D center je tvoren dvema double ve tride Vertex2D. Konstruktor --> public Vertex2D(double x, double y)

public Circle() {
        this(new Vertex2D(0, 0), 1);
        //nebere to ani: this(Vertex2D(0, 0), 1); ... v tomto pripade to rve ze nemuze najit metodu Vertex2D(int, int)
    }[/code