Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]invocare metodi riscritti in una sottoclasse

    Ciao ho un problema stupidissimo...in pratica devo invocare nella sottoclasse il metodo costo() della stessa sottoclasse:

    codice:
    import java.util.*;
    class ProdottoScontato3x2 extends Prodotto1{
        ProdottoScontato3x2(String nome, double prezzo, int q){
            super(nome,prezzo,q);
        }
    
        @Override
        public double costo(){
        int resto=getQunatità()%3;
        int lottiDaTre=getQunatità()/3;
        return lottiDaTre*(2*getprezzo())+resto*getprezzo();
    }
    public static void main(String[] args){
        ProdottoScontato3x2 i=new ProdottoScontato3x2("farina",2.40,2);
        System.out.println(i.costo());
    }
    }
    la jvm non dovrebbe cercare se nei metodi della sottoclasse c'è un metodo riscritto e stamparmi quindi quello?Perchè allora mi invoca il metodo costo() della superclasse?
    Ultima modifica di el92; 08-07-2015 a 16:30

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    la jvm non dovrebbe cercare se nei metodi della sottoclasse c'è un metodo riscritto e stamparmi quindi quello?Perchè allora mi invoca il metodo costo() della superclasse?
    Visto che il metodo lo invochi direttamente su un reference ProdottoScontato3x2 e visto che ProdottoScontato3x2 ha un costo() definito, il fatto che questo sia un override, è ininfluente (almeno in termini della risoluzione del metodo da parte del compilatore).

    Posta del codice in più, perché per quello che si vede, risulta certo che il metodo invocato è quello di ProdottoScontato3x2.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.