Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Polimorfismo

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Bhe...quello è il codice, mi pareva abbastanza chiaro :-)
    Stavo vedendomi un po' java e mi era venuto questo dubbio. cmq l'esempio completo sarebbe:

    codice:
    component.java:
    packege Components;
    public class Component{
      public String _id = "Base";
      public Component(){this.load();}
      protected void load(){
          // Qua devo usare _id...ma quello della derivata
      }
    }
    
    Xcomponent.java:
    packege Components;
    public class XComponent extends Component{
      public String _id = "X";
      public XComponent(){super();}
    }
    
    nel main:
    Component x = new XComponent();
    System.out.println(x._id);
    mi viene stampato "Base"...invece io vorrei "X".


    Come faccio a fargli prendere la variabile della classe derivata, senza assegnarla esplicitamente, come accade in PHP?

    Ovviamente potrei "settarla" nel costruttore di XComponent, ma mi viene detto che super()va prima di tutto
    Spero di essere chiaro
    Grazie
    Ultima modifica di boots; 06-06-2021 a 12:41

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da boots Visualizza il messaggio
    codice:
    Component x = new XComponent();
    System.out.println(x._id);
    Il principio del override, derivante dall'uso di ereditarietà/polimorfismo, si applica SOLO ai metodi di istanza. Non alle variabili.

    x._id ---> x è una variabile di tipo Component (NON importa ora se gli assegni un XComponent), quindi il _id referenziato è esattamente e solamente quello di Component e non può essere altro.
    Ultima modifica di andbin; 07-06-2021 a 09:45
    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.