Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    181

    Ereditarietà classi : initbalance cannot be resolved

    Ciao a tutti,
    premetto che sono un novizio in Java e sto provando a scrivere qualche esercizio. Nella fattispecie ne sto facendo uno sull'ereditarietà delle classi. Ho scritto una super classe ed una sottoclasse che sono le seguenti:

    SUPERCLASSE
    public class BANKACCOUNT {

    // Costruttore classe
    public BANKACCOUNT(double initbalance) {
    balance = initbalance;
    // genera il prossimo numero di conto da assegnare
    lastAssignedNumber = lastAssignedNumber + 1;
    // assegna il numero di questo conto bancario
    accountNumber = lastAssignedNumber;
    }

    // Metodi
    public void DEPOSIT(double amount){
    if (amount <= 0)
    {
    // segnalazione di eccezzione amount<=0
    throw new IllegalArgumentException();
    }
    balance = balance + amount;
    }

    public void WITHDRAW(double amount){
    if (amount <= balance)
    {
    balance = balance - amount;
    }
    }

    public double GETBALANCE() {
    return balance;
    }

    // Variabili istanza
    private double balance;
    private int accountNumber;

    // Variabili di classe
    private static int lastAssignedNumber; // ultimo numero di conto assegnato // viene inizializzata automaticamente // solo la prima volta che si richiama // l'oggetto. Percui se è un numero a 0,
    // se è un booleano a FALSE e se è un
    // oggetto a NULL
    }


    SOTTOCLASSE
    public class SavingsAccount extends BANKACCOUNT {
    // Costruttore classe
    public SavingsAccount(double rate){
    // Costruzione superclasse
    super(initbalance);
    // Inizializza la variabile del tasso di interesse
    interestRate = rate;
    }

    // Metodi
    public void addInterest(){
    double interest = this.GETBALANCE() * interestRate;
    this.DEPOSIT(interest);
    }

    // Variabili istanza
    private double interestRate;
    }


    La sottoclasse mi dovrebbe calcolare il tasso di interesse su un dato conto bancario. Ma il problema è nella riga riferita alla costruzione della superclasse nella sottoclasse, cioè
    super(initbalance) il compilatore mi dice "initbalance cannot be resolved".
    Qualcuno può aiutarmi, grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Ereditarietà classi : initbalance cannot be resolved

    Originariamente inviato da gcadmin
    codice:
    public class SavingsAccount extends BANKACCOUNT {
    	// Costruttore classe
    	public SavingsAccount(double rate){
    		// Costruzione superclasse
    		super(initbalance);
    		// Inizializza la variabile del tasso di interesse
    		interestRate = rate;
    	}
    super(initbalance) il compilatore mi dice "initbalance cannot be resolved".
    Non vedo un initbalance in SavingsAccount .... cosa volevi passare al super-costruttore?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    181
    Ciao andbin,

    al super-costruttore volevo passare initbalance della superclasse.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    181
    Mi spiego meglio, initbalance è un parametro del costruttore della superclasse, non è che devo passare nella sottoclasse un parametro che richiami le variabili d'istanza della superclasse?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da gcadmin
    al super-costruttore volevo passare initbalance della superclasse.
    Ma non ha senso!! Invochi super(blabla) proprio per passare qualcosa di specifico al super-costruttore per inizializzare le variabili di istanza della super-classe.

    Se tu avessi il costruttore di SavingsAccount così:

    codice:
    public SavingsAccount(double initbalance, double rate) {
        super(initbalance);
        interestRate = rate;
    }
    Allora sì .. sarebbe logico! Costruisci un SavingsAccount passando anche un valore per initbalance e siccome tale proprietà sta nella super-classe, la passi al super-costruttore per la inizializzazione del campo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    181
    Ti ringrazio andbin, dal tuo esempio mi è più chiaro anche l'uso del super-costruttore e dove stava il mio errore.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.