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