Estratto del documento

Definire la sottoclasse che deriva dalla superclasse

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

class NomeSottoclasse extends NomeSuperclasse {
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. L’ereditarietà è un paradigma che supporta l’obiettivo di riusabilità del codice.

Quando sfruttare l'ereditarietà

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.

Esempio: SavingsAccount

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

  • Dovrà avere un tasso annuo di interesse 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 caratteristiche (campi di esemplare e metodi) di BankAccount, specifichiamo soltanto le peculiarità di SavingsAccount.

Implementazione della classe 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 proprietà in più. La classe derivata si chiama sottoclasse, la classe da cui si deriva si chiama superclasse.

Osservazioni su SavingsAccount

Il metodo addInterest invoca getBalance e deposit invece che usare direttamente il campo balance. Questo perché il campo balance è definito come private in BankAccount, mentre addInterest è definito in SavingsAccount 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 linguaggio, ovvero Object.

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