Est-il possible d'appeler une méthode d'une classe Abstraite dans la classe dérivée ou toute autre classe
Est-il possible d'appeler une méthode d'une classe Abstraite dans la classe dérivée ou toute autre classe. Mon code est ci-dessous, je tiens à appeler Abstr de Describe()
méthode dans le Programme Principal de la méthode.
Est-il possible? si la réponse est oui comment?
class Program
{
public void Main()
{
//I want to call the Describe() method here, how do i do that
Console.ReadLine();
}
}
public abstract class Abstr
{
public void Describe()
{
//do something
}
}
- avez-vous déjà essayer et effectivement vous avez un problème ?
- oui je suis d'erreur
- Quelle erreur il vous a donné?
- Personne ne peut vous aider si vous gardez la modification de votre code d'exemple. Aussi, il permet d'afficher le texte de toutes les erreurs que vous obtenez. Sauve-nous chasser de nos queues en essayant de trouver une réponse lorsque vous avez des informations qui pourraient les aider.
- ce n'est pas juste, je n'ai pas attendu ce à partir de votre site
- Qu'est-ce exactement avez-vous vous attendre? Vous avez des dizaines de questions, donc ce n'est pas la première fois que vous avez demandé de l'aide.
Vous devez vous connecter pour publier un commentaire.
Depuis votre méthode n'est pas statique, il est nécessaire d'initialiser une variable à partir de cette classe abstraite et appeler cette méthode à partir d'elle. Pour cela, vous pouvez héritent de la classe abstraite par concreate classe et puis appelez la méthode. Notez que la classe abstraite ne peut pas être initialisé jeter un constructeur comme
Abstr abstr = new Abstr();
n'est pas valide. Donc:Abstr
instance.Vous devriez être en mesure d'utiliser
Abstr.Describe()
directement. C'est une méthode statique, de sorte que la classe abstraite ne compte pas.Modifier
Maintenant que le code en question a été modifié et la
static
mot-clé est retirée sur les méthodes, cette réponse ne s'appliquent plus.Main
etDescribe
ont lastatic
mot-clé, de sorte que ceux de la méthode sont statiques.A: bien Sûr, tant que c'est public, protected (et de la même classe ou sous-classe), ou internes (et de la même assemblée)
A: bien Sûr, tant que c'est public ou interne (et de la même assemblée)
Bon lien:
http://agsmith.wordpress.com/2007/12/15/internal-and-protected/
oui, il est possible de code : ici
Cela fonctionne pour les non méthode statique ainsi
var lol = new Program(); Console.WriteLine(lol.lolol());
Il suffit d'appeler
EDIT:
Post Original a été modifié, de sorte que cette réponse n'est pas valide.
Ce qui concerne.
Oui, tant que la définition de la méthode dans le supertype est accessible pour le sous-type (et le code qui veut invoquer la méthode).
Voici un exemple de code. Si la définition de la méthode dans le sous-type ou supertype est invoqué dépend de la façon dont le remplacement est défini:
base.Charlie()
. Le mot-clé le modificateur deoverride
signifie que votre sous-type est remplacer (spécialisé) le parent de ce type de méthode/propriété, et que la spécialisation existe même lorsqu'une instance est sortie. En revanche, lanew
modificateur indique que votre remplaçant (cacher) la société mère de la mise en œuvre et sur la sortie, l'instance devrait revenir au comportement des parents. Il convient de noter que lorsqu'une méthode ou une propriété est définie avecoverride
, la version du parent qui cesse d'être accessible au public.