2009-08-05 5 views
0

sein, wenn ich eine Klasse haben:Methodenparameter kann eine Klasse oder Schnittstelle, wenig verwirrt

public blah 
{ 

} 

Dann habe ich eine andere Klasse, die blah“

public ablah : blah 
{ 

} 

erbt Kann ich dies dann tun

?
public class Someservice 
{ 
public bool SomeBlah(blah b) 
{ 

} 
} 

Kann ich nenne es den Dienst mit beiden Klassen blah oder Ablah?

dh.

Ich sah dies irgendwo, und ich dachte, das war nur möglich, wenn man ein Interface verwendet?

+0

Diese Frage könnte durch ein paar Tastenanschläge von Ihnen beantwortet worden sein. Ist jemand einverstanden, dass es geschlossen werden sollte? –

Antwort

0

Das würde gut funktionieren. (vorausgesetzt, es würde kompilieren ... überprüfen Sie Ihre Rechtschreibung)

1

Es heißt Polymorphismus und es ist mit Klassen sowie Schnittstellen möglich.

Im Allgemeinen würden Sie eine Klasse verwenden, wenn Sie einen Teil der Implementierung in der Basisklasse bereitstellen möchten (was in einer Schnittstellendeklaration nicht möglich ist). Auch Schnittstellen erlauben nur für öffentliche Mitglieder.

0

Sie können das ganz gut tun. In diesem Fall verwenden Sie die Standardvererbung. Der beste Weg, um darüber nachzudenken, ist dies: "ablah" ist ein "blah", also können Sie eine "ablah" -Instanz überall verwenden, die ein blah erwartet.

Ein gängiges Beispiel ist ein

public class Animal {} 
public class Dog : Animal {} 

In diesem Fall „Dog“ ist ein „Tier“ (was man erwarten würde), wenn Sie also eine Methode, die ein Tier nimmt, wird es funktionieren mit einem Hund.

1

Yep, obwohl es nicht über eine Schnittstelle, sondern eine Facette der objektorientierten Programmierung Polymorphismus (http://msdn.microsoft.com/en-us/library/ms173152(VS.80).aspx) genannt

Wenn Sie

public class Someservice{ 
    public bool SomeBlah(ablah b) 
    { } 
} 

Ihr Code Someservice hatte nicht funktionieren würde, denn während du kannst ein ablah-Objekt in ein bla-Objekt werfen, du kannst das Gegenteil nicht tun. Es ist, als würde ich sagen, ich hätte ein Auto (blah) und es ist ein Toyota (ablah). Wenn ich etwas tun würde, das ein Auto braucht, würde mein Toyota die Anforderung erfüllen. Aber wenn ich etwas machen wollte, das einen Toyota brauchte, konnte ich kein altes Auto benutzen.

HTH. pk

Verwandte Themen