Jak przedefiniować klasę typu void wyświetlającą jakiś napis?
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.
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. ;)
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.
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();
}
}
znajdź dziesięć różnic:
System.out.println(p);
punkt2.wyswietl();
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();
Tak właśnie chcę zrobić, tylko nie wiem jak w klasie dziedziczącej przedefiniować tą metodę. :/