Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Jenda 07. 10. 2012, 19:01:15

Název: Přetěžování konstruktoru v Javě
Přispěvatel: Jenda 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
Název: Re:Pretezovani konstruktoru
Přispěvatel: cira 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?

Název: Re:Pretezovani konstruktoru
Přispěvatel: Jenda 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
Název: Re:Přetěžování konstruktoru v Javě
Přispěvatel: Vladimír Drgoňa 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
Název: Re:Přetěžování konstruktoru v Javě
Přispěvatel: Ondřej Vaniš 08. 10. 2012, 10:09:28
http://www.leepoint.net/JavaBasics/oop/oop-45-constructor-overloading.html