• Non ci sono risultati.

OverridingProgrammazione in Rete e Laboratorio

N/A
N/A
Protected

Academic year: 2021

Condividi "OverridingProgrammazione in Rete e Laboratorio"

Copied!
1
0
0

Testo completo

(1)

1

Overriding

Programmazione in Rete e Laboratorio

Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino [email protected]

http://www.di.unito.it/~baldoni/didattica

2

Overloading, overriding, …

Firma o signature: nome + lista dei tipi dei parametri

Overloading:

stesso nome ma diversa lista dei tipi di parametri

Overriding:

stessa firma ma classi diverse (purché nella stessa gerarchia)

class ClasseA {

public void metodo (int x) {

System.out.println("Metodo di Classe A: " + x);

}

public void metodo() {

System.out.println("Metodo di Classe A");

this.versamento(-1);

} }

class ClasseB extends ClasseA { public void metodo (int x) {

System.out.println("Metodo di Classe B esteso");

super.versamento(x);

}

public void metodo() {

System.out.println("Metodo di Classe B esteso");

super.versamento();

} }

OVERLOADING

OVERLOADING OVERRIDING OVERLOADING

3

Overloading, overriding, … anche per i costruttori

La chiamata di this(… ) o super(…) deve essere la prima istruzione del costruttore!

class ClasseSopra { public ClasseSopra(int x) {

System.out.println("Costruttore ClasseSopra: " + x);

}

public ClasseSopra() { this(-1);

System.out.println("Costruttore ClasseSopra");

} }

class ClasseSotto extends ClasseSopra { public ClasseSotto (int x) { super(x);

System.out.println("Costruttore ClasseSotto");

}

public ClasseSotto() { super();

System.out.println("ostruttore ClasseSotto");

} }

OVERLOADING

OVERLOADING OVERRIDING OVERLOADING

4

Overriding di metodi privati

Se invio il messaggio metodo1 ad un oggetto di tipo ClasseDue quale metodo metodo2 viene eseguito?

Binding dinamico?

Dichiarare che un metodo è privato equivale a “cambiargli nome”

In effetti a parte ClasseUno nessuno sa o deve sapere dell’esistenza di metodo2 di ClasseUno

class ClasseUno { public void metodo1 () { System.out.println("Eseguito metodo 1 nella classe Uno");

this.metodo2();

}

private void metodo2() { System.out.println("Eseguito metodo 2 nella classe Uno");

} }

class ClasseDue extends ClasseUno { public void metodo2 () { System.out.println("Eseguito metodo 2 nella classe Due");

} }

5

Overriding di campi

È possibile ridefinire dei campi

MA

Ai campi non si applica il binding dinamico!

class ClassePadre { public int x = 1;

public int y = 2;

public void getValue() {

System.out.println("Valore della x: "

+ this.x);

System.out.println("Valore della y: ” + this.y);

} }

class ClasseFiglia extends ClassePadre { public String x = “3”;

public int z = 4;

public void getValue() { super.getValue();

System.out.println("Valore della x estesa: " + this.x);

System.out.println("Valore della z: ” + this.z);

} }

6

Overriding di variabili nei blocchi

È possibile definire variabili locali ad un blocco

MA

A differenza del C o del Pascal, in un blocco interno Java non è possibile ridefinire una variabile esterna

class ProvaVariabiliLocali {

public static void main(String[] args) {

{

int z = 2;

}

System.out.println(z);

int x = 1;

if (x > 0) {

int y = 3;

} else {

int x = 2;

int y = 5;

} int y = 4;

} }

Riferimenti

Documenti correlati

“Disposizioni in materia di organizzazione della rete ospedaliera. Avvio procedure per l’attivazione dell’ospedale e polo di ricerca nell’area territoriale della

 SETTORIALITA’: grado in cui la rete si dimostra SETTORIALITA’: grado in cui la rete si dimostra suddivisibile in grappoli di legami distinti.. suddivisibile in grappoli di

■ Posso definire che un certo file che contiene una certa classe pubblica e un certo numero di altre classi (non pubbliche!) fa parte di un certo package mediante la parola

■ Gli oggetti che possono essere contenuti in una qualsiasi struttura dati sono di tipo Object, quindi un oggetto qualsiasi. ■ Un oggetto di tipo, ad esempio, ArrayList puo`

■ Il client effettua la richiesta di una connessione ad un server per un servizio collegato ad una determinata porta. ■ Se la richiesta è accettata la connessione tra i due

public interface ActionListener extends java.util.EventListener { public void actionPerformed(ActionEvent e);. public class CounterControl implements ActionListener {

■ Il client ottiene uno stub (surrogato dell’oggetto rosso presso il client) tramite il server registry. ■ Deve conoscerne IP, porta

■ Anche quando non vi sono accessi al server l’oggetto (la servlet) di tipo AccessCounter permane nella Java Virtual Machine del server stesso.