#include "iostream"
using namespace std;
class Base{
public:
void metodo(){
cout << "metodo della Base" << endl;
getchar();
}
};
class Derivata:public Base{
public:
void metodo(){
cout << "metodo della Derivata" << endl;
getchar();
}
};
void main(){
Base*miaBase=new Base();
Derivata*miaDerivata=new Derivata();
miaBase->metodo();
miaDerivata->metodo();
}
In questo caso il metodo metodo() della classe derivata nasconde il metodo metodo() della classe base.Si dice nasconde perché quando io chiamo l'esecuzione di metodo() dalla classe derivata, mi esegue il codice specificato nel metodo riscritto nella classe derivata.
metodo della Base
metodo della Derivata
Se invece evito di scrivere un metodo() nella classe derivata, allora non viene nascosto quello ereditato:
#include "iostream"
using namespace std;
class Base{
public:
void metodo(){
cout << "metodo della Base" << endl;
getchar();
}
};
class Derivata: public Base{
public:
};
void main(){
Base*miaBase=new Base();
Derivata*miaDerivata=new Derivata();
miaBase->metodo();
miaDerivata->metodo();
}
metodo della Base
metodo della Base
Facciamo l'identica cosa in VB.NET:
Module Module1
Class Base
Public Sub metodo()
Console.WriteLine("metodo della Base")
Console.ReadLine()
End Sub
End Class
Class Derivata
Inherits Base
Public Sub metodo()
Console.WriteLine("metodo della Derivata")
Console.ReadLine()
End Sub
End Class
Sub Main()
Dim miaBase As New Base
Dim miaDerivata As New Derivata
miaBase.metodo()
miaDerivata.metodo()
End Sub
metodo della Base
metodo della Derivata
Togliamo, allo stesso modo, il metodo della classe derivata:
Module Module1
Class Base
Public Sub metodo()
Console.WriteLine("metodo della Base")
Console.ReadLine()
End Sub
End Class
Class Derivata
Inherits Base
End Class
Sub Main()
Dim miaBase As New Base
Dim miaDerivata As New Derivata
miaBase.metodo()
miaDerivata.metodo()
End Sub
End Module
metodo della Base metodo della BaseBene. Anche qui il metodo metodo() della classe derivata nasconde il metodo metodo() della classe base.
Ma quando io scrivo nella classe derivata un metodo con lo stesso nome del metodo della classe base ottengo un warning che mi dice che è opportuno mettere Overloads.
Perché?
Nessun commento:
Posta un commento