Przedefiniowanie metody void

0

Jak przedefiniować klasę typu void wyświetlającą jakiś napis?

0

Nie ma w Javie czegos takiego jak 'klasa typu void'. Klasa to typ. Jest tez klasa / typ Void, ale na pewno nie o to chodzi. Doprecyzuj jesli chcesz dostac odpowiedz.

0

Dla przykładu:

import java.lang.Math;

class Punkt {

// pola
int x, y;

// konstruktory
    Punkt() {
        this.x = 0;
        this.y = 0;
    }

    Punkt(int x, int y) {
        this.x = x;
        this.y = y;
    }

// metody
    void przesun(int dx, int dy) {
        x += dx;
        y += dy;
    }

    void wyswietl() {
        System.out.print("Współrzędne punktu wynoszą: (" + x + "," + y + ")");
    }

    int odcieta() {
        return x;
    }

    int rzedna() {
        return y;
    }

    void skaluj(int k) {
        x *= k;
        y *= k;
    }

    double odleglosc(Punkt punkt) {
        double dx = x - punkt.x;
        double dy = y - punkt.y;
        return Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
    }
}   
public class KolorowyPunkt extends Punkt {
    // pola

    int kolor;

    // konstruktory

    KolorowyPunkt(int x, int y, int kolor) {
        super(x, y);
        this.kolor = kolor;
       }

   // metody

   void wyswietl() {
       super.wyswietl();
       System.out.print(", a jego kolor to " + kolor);
   }

   void koloruj(int kolor) {
       this.kolor = kolor;
    }
}

Program działa, ale wydaję mi się, że można to zrobić lepiej. ;)

0

W klasie Punkt zamiast metody wyswietl, metoda toString

public String toString()
{
    return "Współrzędne punktu wynoszą: (" + x + "," + y + ")";
}

Analogicznie w klasie KolorowyPunkt. A jak będziesz chciał opisać punkt na ekranie, to napisz

System.out.println(p);

p jest typu Punkt lub KolorowyPunkt.

0

Chodzi właśnie o to, że koniecznie musi być to metoda typu void. :(

PS. Z ciekawości sprawdziłem twoją metodę, i program nic nie wyświetla. :(

 public String wyswietl()
{
    return "Współrzędne punktu wynoszą: (" + x + "," + y + ")";
}
public class Test {
    public static void main(String args[]) {
       KolorowyPunkt punkt = new KolorowyPunkt(1, 2, 3);
       Punkt punkt2 = new Punkt();
       punkt2.wyswietl();

    }
}
0

znajdź dziesięć różnic:
System.out.println(p);

punkt2.wyswietl();

0
nowy325 napisał(a):

Chodzi właśnie o to, że koniecznie musi być to metoda typu void. :(

PS. Z ciekawości sprawdziłem twoją metodę, i program nic nie wyświetla. :(

public String wyswietl()
{
return "Współrzędne punktu wynoszą: (" + x + "," + y + ")";
}

public class Test {
public static void main(String args[]) {
KolorowyPunkt punkt = new KolorowyPunkt(1, 2, 3);
Punkt punkt2 = new Punkt();
punkt2.wyswietl();
}

}



Jeżeli chcesz, żeby to zadziałało i metoda nic nie zwracała to zamiast zwracać Stringa, wypisz go za pomocą println();
0

Tak właśnie chcę zrobić, tylko nie wiem jak w klasie dziedziczącej przedefiniować tą metodę. :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0