2013-09-23 21 views
7

Mam następujące klasy z niektórych metod i chciałbym użyć tego jako klasy bazowej innej klasy.Jaki byłby właściwy modyfikator?

public class BaseClass 
{ 
    public string DoWork(string str) 
    { 
     // some codes... 
    } 

    // other methods... 
} 

Nie chcę tej klasy należy instancja, ale klasa pochodna powinna nadal korzystać z oryginalnego wdrożenie metod klasy bazowej.

Czy to możliwe? Jaki powinien być mój modyfikator?

+5

potrzebujesz "abstrakcji". –

+0

ale streszczenie nie zawiera żadnych praw do implementacji? – yonan2236

+0

@ yonan2236 no. Klasy abstrakcyjne mogą zawierać konkretne metody i właściwości. W przeciwnym razie nie różniłyby się tak naprawdę od interfejsów (poza deklarowaniem członków niepublicznych). –

Odpowiedz

6

Ponieważ nie chcesz, aby ta klasa została utworzona, należy utworzyć klasę abstract. Nadal możesz wdrożyć na zajęciach.

urywek,

public abstract class BaseClass 
{ 
    public virtual string DoWork(string str) 
    { 
     // can have implementation here 
     // and classes that inherits can overide this method because of virtual. 
    } 

    // other methods... 
} 
+1

dlaczego metoda jest wirtualna? – yonan2236

+0

@ yonan2236, więc można zastąpić tę metodę. –

+0

oh, więc oznacza to, że klasa pochodna może mieć własną implementację metody 'DoWork'? dobrze? – yonan2236

7

Bądź BaseClassabstract:

public abstract class BaseClass 
{ 
    // Only available to BaseClass 
    private string _myString; 

    public string DoWork(string str) 
    { 
     // Available to everyone 
     return _myString; 
    } 

    protected void DoWorkInternal() { 
     // Only available to classes who inherit base class 
    } 
} 

ten sposób można zdefiniować własny kod w ciągu BaseClass - ale to nie może być inicjowany bezpośrednio, musi być dziedziczone z.

+0

'DoWork' powinien prawdopodobnie być oznaczony jako' virtual'. –

+2

@ Mr.Smith Nie jestem pewien. OP mówi "ale klasa pochodna powinna nadal używać oryginalnej implementacji metod swojej klasy bazowej". Myślę, że nie chce "wirtualnego". –

Powiązane problemy