Estratto del documento

:

SCOPO

Definire la Sottoclasse che deriva dalla Superclasse

 SINTASSI:

Definendo nuovi metodi e/o nuove variabili, oltre ai class NomeSottoclasse extends NomeSuperclasse

 { costruttori

suoi costruttori nuovi metodi

nuove variabili

Nota: una classe estende sempre una sola altra classe }

Nota: se la superclasse non è indicata esplicitamente, il

compilatore usa implicitamente java.lang.Object riusabilità del codice.

L’ereditarietà è un paradigma che supporta l’obiettivo di

Si sfrutta quando si deve realizzare una classe ed è già disponibile un'altra classe che rappresenta un

concetto più generale. In questi casi, la nuova classe da scrivere è una classe più specializzata, che eredita i

comportamenti (metodi) della classe più generale e ne aggiunge di nuovi.

: SavingsAccount

ESEMPIO

Supponiamo di voler realizzare una classe SavingsAccount per rappresentare un conto bancario di

risparmio: di interesse

dovrà avere un tasso annuo determinato al momento dell’apertura

 dovrà avere un metodo addInterest per accreditare gli interessi sul conto

Un conto bancario di risparmio ha tutte le stesse caratteristiche di un conto bancario, più alcune altre

caratteristiche che gli sono peculiari.

Allora riscriviamo la classe SavingsAccount usando il meccanismo dell'ereditarietà:

(extends), eredita tutte le

Dichiariamo che SavingsAccount è una classe derivata da BankAccount quindi

caratteristiche (campi di esemplare e metodi) di BankAccount, specifichiamo soltanto le peculiarità di

SavingsAccount.

public class SavingsAccount extends BankAccount

{ public SavingsAccount(double rate)

{ interestRate = rate;

}

public void addInterest()

{ deposit(getBalance() * interestRate / 100);

}

private double interestRate;

}

Oggetti della classe derivata SavingsAccount si usano come se fossero oggetti di BankAccount con qualche

sottoclasse, superclasse.

proprietà in più. La classe derivata si chiama la classe da cui si deriva si chiama

Osservazioni su SavingsAccount: addInterest getBalance

Il metodo invoca e

public class SavingsAccount extends BankAccount deposit invece che usare direttamente il campo

{ ...

public void addInterest() balance. Questo perché il campo balance è

{ deposit(getBalance() * interestRate / 100); } BankAccount,

definito come private in mentre

...

} addInterest SavingsAccount

è definito in e non

ha accesso a balance.

La Superclasse Universale Object

In Java, ogni classe che non deriva da nessun’altra deriva implicitamente dalla superclasse universale del

Anteprima
Vedrai una selezione di 1 pagina su 1
Informatica I - estendere una classe in java Pag. 1
1 su 1
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher enricopava di informazioni apprese con la frequenza delle lezioni di Informatica 1 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Avanzini Federico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community