Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537

    Costruttore sottoclasse e metodi super classe

    Ragazzi sto scrivendo un piccolo programma che ha la funzione di Bancomat (è solo un esercizio nulla di reale) praticamente voglio sapere se è possibile chiamare un metodo della superclasse direttamente dal costruttore vi posto l'esempio :

    Questo è il main :
    Codice PHP:
    public class ContoBancarioTest {
        public static 
    void main(String[] args) {

            
    ContoBancario societa = new ContoBancario(1000);
            
    Agente dip = new Agente(300);

            
    societa.Preleva(200);
            
    societa.Deposita(186.4);


            
    System.out.println(societa.GetSaldo());

        }
            

    Questa è la classe :

    Codice PHP:
    public class ContoBancario {

        private 
    double deposita;
        private 
    double preleva;
        private 
    double saldo;

        public 
    ContoBancario(double QuotaApertura){

            
    this.deposita QuotaApertura;
            
    this.preleva 0;
            
    this.saldo QuotaApertura;

        }


        public 
    void Deposita(double d) {

            
    this.saldo this.saldo d;
        
        }

        public 
    void Preleva(double p){

            if (
    this.saldo 0){

                
    this.saldo this.saldo p;

            }

        }

        public 
    double GetSaldo(){

            return 
    this.saldo;

        }


    E questa la sotto classe :

    Codice PHP:
    public class Agente extends ContoBancario {


        public 
    Agente(double s)
        {

            ?????????????? 
    Non so che metterequesto è l'inceppo

        }

        public void Deposita(int d){

            super.Deposita(d);

        }

        public double GetSaldo(){

            return super.GetSaldo();

        }


    Praticamente il mio problema è che il costruttore della sottoclasse deve aggiornare la variable saldo della super classe ma non so come fare, allora ho pensato che potevo richiamare il metodo Deposita e passarli il parametro.
    Secondo voi cosa devo fare?

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

    Re: Costruttore sottoclasse e metodi super classe

    Originariamente inviato da wino_7
    Praticamente il mio problema è che il costruttore della sottoclasse deve aggiornare la variable saldo della super classe ma non so come fare, allora ho pensato che potevo richiamare il metodo Deposita e passarli il parametro.
    Secondo voi cosa devo fare?
    Nella classe ContoBancario hai definito un costruttore che ha un argomento. Quindi non c'è più il costruttore di default no-arg (senza argomenti).
    Questo vuol dire che nella sottoclasse Agente devi per forza fare esplicitamente una chiamata super(argomento) all'inizio del costruttore, perché altrimenti non compilerebbe nemmeno.

    Quindi, dovresti mettere super(s). Se non è questo che volevi fare concettualmente, allora devi rivedere il design delle classi.
    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 L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537
    Ho capito infatti avevo intuito che dovevo fare super(s), ma con questo praticamente vuol dire che passo il valore di s al costruttore della super classe che aggiorna la variabile private saldo?

    Ma se faccio così ed ad esempio società fa 10 versamenti e poi costrisco l'oggetto dip, non viene sovrascritto tutto il valore di saldo?

    Oppure non accade perchè in questo caso la variabile saldo è puntata dall' altro oggetto (dip), ma se è così non potrò mai aggiornare la somma dei versamenti di società e dip nella variabile saldo.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da wino_7
    Ho capito infatti avevo intuito che dovevo fare super(s), ma con questo praticamente vuol dire che passo il valore di s al costruttore della super classe che aggiorna la variabile private saldo?

    Ma se faccio così ed ad esempio società fa 10 versamenti e poi costrisco l'oggetto dip, non viene sovrascritto tutto il valore di saldo?

    Oppure non accade perchè in questo caso la variabile saldo è puntata dall' altro oggetto (dip), ma se è così non potrò mai aggiornare la somma dei versamenti di società e dip nella variabile saldo.
    Credo anche che ci sia un problema di cattivo "design". Un Agente è-un ContoBancario??? Pur essendo ignorante di questioni finanziarie, direi proprio di no.
    La mia impressione è che stai usando male le classi e l'ereditarietà.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537
    Infatti hai ragione, se puoi mi spiegheresti l'ereditarietà?
    So che è molto lungo ma ti prego ho un esame fra 10 giorni

  6. #6
    Il concetto di superclasse/sottoclasse è analogo a quello di una generalizzazione.

    Ad esempio ha senso definire una superclasse Veicolo e poi diverse sottoclassi Automobile, Bicicletta,Moto.

    Da questo esempio è chiaro che ad esempio, quando tu crei un nuovo oggetto Automobile, devi creare anche un nuovo oggetto Veicolo, poichè un Automobile è ANCHE un veicolo.

    L'esempio è banale, ma credo allo stesso tempo esplicativo.

    Ci sono decine di guide on-line che spiegano l'ereditarietà. Studiane una.

  7. #7
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537
    OK ti ringrazio, speriamo che quest'esame vada bene !!!!!!!!!!

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.