Newsgroup: it.comp.lang.visual-basic
Titolo: [?] [.NET] Ereditarità (e tre)

Ok, nei miei post precedenti ho fatto una figuraccia.
Vediamo se ne riesco a collezionare un'altra :P
Se io ho la mia solita classe base Personaggio che espone il Cammina, è
possibile per la classe derivata Paperino nascondere questo metodo oppure
modificarne il tipo dei parametri e di ritorno?
Come?
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 modificarne il tipo dei parametri e di ritorno?
Ho il seguente esempio:
Public Class classeBase
    Sub Condizione2(ByVal str As String)
        Console.WriteLine("Console2: " & str)
    End Sub
    Sub Condizione(ByVal str As String)
        Console.WriteLine("CondizioneA: " & str)
    End Sub
End Class
Public Class classeDerivata : Inherits classeBase
    Shadows Sub Condizione(ByVal int1 As Int32, ByVal int2 As Int32)
        Console.WriteLine("CondizioneB: " & int1 * int2)
    End Sub
End Class
Private Sub Test()
        Dim cl As New classeDerivata()
        cl.Condizione2("ABC")
        cl.Condizione(3, 7)
    End Sub
La parola chiave Shadows nasconde tutti i membri della classe base
giuseppeD

 La parola chiave Shadows nasconde tutti i membri della classe base
Ok.
(scusate l'OT)
Infatti è quello che mi aspettavo, però perchè in C# questo non funziona? :)
E' possibile fare lo stesso in C#?
Es:
using System;
public class classeBase {
     public void Condizione2(string str) {
     }
     public void Condizione(string str) {
     }
}
public class classeDerivata : classeBase {
     private new void Condizione(int int1, int int2) {
         Console.WriteLine("CondizioneB: " + int1 * int2);
     }
}
class cMain {
     static void Main() {
         classeDerivata cl = new classeDerivata();
         cl.Condizione("ABC");
         cl.Condizione(3, 7);
     }
}
Ciao

E' possibile fare lo stesso in C#?
Non voglio polemizzare, perche' anch'io sono fra i primi che scrivono
OT, pero' perche' fai sempre domande su C# qui?
-- 
ciao, hal

 OT, pero' perche' fai sempre domande su C# qui?
Perchè uso quello e sono affezionato a questo NG :P
Ciao

 Perchè uso quello e sono affezionato a questo NG :P
E anche perchè quelli del NG di C# sono antipatici.
Ciao

 }
Il seguente funziona:
using System;
namespace ProggettoStudio
{
 /// <summary>
 /// Descrizione di riepilogo per classeBase.
 /// </summary>
 public class classeBase
 {
 public void Condizione2(string str)
  {
   System.Console.WriteLine("Console2: " + str);
  }
 public void Condizione(string str)
  {
   System.Console.WriteLine("CondizioneA: " + str);
  }
 }
 public class classeDerivata:classeBase
 {
 public void Condizione(Int32 int1,Int32 int2)
  {
   System.Console.WriteLine("CondizioneB:" + int1 * int2);
  }
 }
}
private void Test()
  {
   classeDerivata cl=new classeDerivata();
   cl.Condizione2("ABC");
   cl.Condizione(5,7);
  }
------------------------
Ho l'impressione che il termine New lo infastidisce.
Secondo il CLR, non nasconde alcun membro ereditato.
giuseppeD

E anche perchč quelli del NG di C# sono antipatici.
:-PPPP 
-- 
ciao, hal

 E anche perchè quelli del NG di C# sono antipatici.
Ma non e' che si sono risentiti perche' fai anche li' il gioco delle tre
carte, postando gli esempi in C# quando il problema c'e' l'hai in VB? ;-)
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 carte, postando gli esempi in C# quando il problema c'e' l'hai in VB? ;-)
Se chiedo per cobol# è lo stesso?
Ciao

 Ciao
Andrea

 }
 Si ma questo non nasconde il metodo ne fa l'overload, non era questo che
chiedeva Zanna!
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

 E' possibile fare lo stesso in C#?
E' evidente "Shadows" del Vb.NET ha una caratteristica in più che non ha il
C#, nel senso che ti facilita la vita ( come è solito fare il VB !! )
Nell'esempio che tu hai postato il modificatore "new" non funziona
probabilmente perchè il metodo della classe che eredita e quello della
classe base NON hanno la stessa firma, viene quindi applicato un overload e
non un hiding.
L'hiding funziona se lo applichi tra metodi con la stessa firma.


 C#, nel senso che ti facilita la vita ( come è solito fare il VB !! )
Ok, dovrò ancora una volta affidarmi a un decompilatore .NET (da quando 
uso .net ho iniziato ad avere un'opinione diversa dei decompilatori).
Ciao