JFrame java
Non capisco questa parte di codice...
super importa il costruttore della classe JFrame, però non capisco perchè bisogna mettere this...
import javax.swing.JFrame;
//Applicazione che visualizza un frame sullo schermo
//Crea una nuova FrameSemplice.
public FrameSemplice() {
super();
this.setTitle("Sono una finestra);
this.setSize(300,100);
this.DefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}super importa il costruttore della classe JFrame, però non capisco perchè bisogna mettere this...
Risposte
this non è necessario, ma alcune persone preferiscono metterlo sempre.
"apatriarca":
this non è necessario, ma alcune persone preferiscono metterlo sempre.
Ti ringrazio però non capisco bene il codice perchè solitamente sono abituato a fare per creare una classe in questo modo:
class Persona {
String nome;
String cognome;
//Inizializzo il costruttore
public Persona(nome,cognome) {
this.nome=nome;
this.cognome=cognome;
}
Non capisco il dubbio. Se avessi dei campi all'interno della classe dovresti inizializzarli come hai mostrato (o in altri modi che dipendono da cosa tu voglia fare). In questo caso i campi della classe padre vengono inizializzati in super() e stai quindi poi richiamando semplicemente dei metodi della classe genitore per settare il titolo della finestra e altre cose.
"apatriarca":
Non capisco il dubbio. Se avessi dei campi all'interno della classe dovresti inizializzarli come hai mostrato (o in altri modi che dipendono da cosa tu voglia fare). In questo caso i campi della classe padre vengono inizializzati in super() e stai quindi poi richiamando semplicemente dei metodi della classe genitore per settare il titolo della finestra e altre cose.
ma non dovrebbe essere cosi il codice
public class FrameSemplice extends JFrame{
//costruttore
public class FrameSemplice(){
super();
}
this.setTitle(Una frame semplice);
this.setSize(300,100);
}
perchè il costruttore viene richiamato con super() che invoca il costruttore Frame(), però non capisco perchè setTitle() e setSize() stanno dentro il costruttore FrameSemplice()...
"apatriarca":
Non capisco il dubbio. Se avessi dei campi all'interno della classe dovresti inizializzarli come hai mostrato (o in altri modi che dipendono da cosa tu voglia fare). In questo caso i campi della classe padre vengono inizializzati in super() e stai quindi poi richiamando semplicemente dei metodi della classe genitore per settare il titolo della finestra e altre cose.
Penso di aver capito, l'unica cosa che ancora non ho molto chiara è come funziona super();