• 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 baldoni@di.unito.it

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

 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.

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