Il modo in cui il mio insegnante scrive e organizza il codice è molto diverso da quello che viene proposto nel mio libro di testo supplementare. In un laboratorio recente, ci è stato richiesto di utilizzare la libreria wheels
per visualizzare diversi oggetti in una singola finestra. Qui è la classe Snowman
che è stato scritto dal mio maestro (codice per le altre voci non sono state incluse per comodità):Qual è l'uso corretto di un costruttore durante l'istanziazione nella classe principale?
public class Snowman {
private Ellipse _top;
private Ellipse _middle;
private Ellipse _bottom;
public Snowman() {
_top = new Ellipse();
_top.setColor(Color.WHITE);
_top.setFrameColor(Color.BLACK);
_top.setFrameThickness(1);
_top.setSize(80, 80);
_middle = new Ellipse();
_middle.setColor(Color.WHITE);
_middle.setFrameColor(Color.BLACK);
_middle.setFrameThickness(1);
_middle.setSize(120, 120);
_bottom = new Ellipse();
_bottom.setColor(Color.WHITE);
_bottom.setFrameColor(Color.BLACK);
_bottom.setFrameThickness(1);
_bottom.setSize(160, 160);
}
public void setLocation(int x, int y) {
_top.setLocation(x + 40, y - 170);
_middle.setLocation(x + 20, y - 100);
_bottom.setLocation(x, y);
}
}
Questo oggetto, tra l'altro, viene poi creata un'istanza della classe SnowmanCartoon
:
public class SnowmanCartoon extends Frame{
private Snowman _snowman;
private Eyes _eyes;
private Hat _hat;
private Bubble _bubble;
public SnowmanCartoon() {
_snowman = new Snowman();
_snowman.setLocation(100, 300);
_eyes = new Eyes();
_eyes.setLocation(165, 150);
_hat = new Hat();
_hat.setLocation(152, 98);
_bubble = new Bubble();
_bubble.setLocation(280, 60);
}
public static void main(String[] args) {
new SnowmanCartoon();
}
}
Qui sono le mie preoccupazioni:
In entrambi queste classi, perché esiste un metodo con lo stesso nome della classe e qual è il suo scopo?
Perché è il metodo
setLocation()
un metodo vuoto mentre il metodoSnowman()
non è, anche seSnowman()
non restituisce nulla?Nella classe
SnowmanCartoon
, quando diceprivate Snowman _snowman;
e_snowman = new Snowman();
, èSnowman
riferimento alla classeSnowman
, o meglio il metodoSnowman()
?Se l'istanza dell'oggetto
Snowman
si riferisce al metodoSnowman()
per impostare tutte le sue proprietà, perché non ho bisogno di usare l'operatore punto:Snowman.Snowman()
?Nel mio libro di testo, variabili e metodi di istanza sono dichiarati in una classe e sono istanziati in un'altra. Tuttavia, sembrano verificarsi simultaneamente nel codice del mio insegnante.
Alcune volte quando devi leggere devi leggere. –
Non so perché la gente ti abbia votato per non aver capito un costruttore. Ti stai sforzando di imparare e questo a mio parere è molto meglio di quelli che pubblicano solo le risposte. – WilliamShatner