Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C#] ereditarietà, cast, interfacce

    Salve, ho due classi così definite

    codice:
    public class C : A, I { }
    
    public class D : B, I { }
    dove C, B e A sono classi semplici e I è un'interfaccia.

    In un'altra classe ho due metodi
    codice:
    public void pippo(A a);
    
    public void pluto(B b);

    Se istanzio un oggetto di tipo I

    codice:
    I i = new C();
    
    oppure
    
    I i = new D();
    come posso invocare pippo o pluto passando quest'oggetto risolvendo dinamicamente il tipo di istanza?

  2. #2

    Esempio in Java

    Ovviamente non compila

    codice:
    public class Main {
    	
    	public void pippo(A a) {
    		System.out.println("PIPPO A");
    	}
    	
    	public void pippo(B b) {
    		System.out.println("PIPPO B");
    	}
    	
    	class A {}
    	
    	class B {}
    	
    	interface I {}
    
    	class C extends A implements I {}
    	
    	class D extends B implements I {}
    
    	public static void main(String[] args) {
    		Main m = new Main();
    		
    		I i = m.new C();
    		m.pippo(i);
    		
    		i = m.new D();
    		m.pippo(i);
    	}
    
    }

  3. #3
    Ma se A e B non implementano I, non mi sembra tu possa passare un oggetto di tipo I ad un metodo che accetta A e B.
    Devi fare un cast esplicito oppure fare implementare I ad A e B invece che a B e C
    Saluti a tutti
    Riccardo

  4. #4
    Si esatto, devo fare un cast esplicito. Il problema è che il cast lo devo fare dinamicamente a runtime, non staticamente via codice.

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.