Pytania otagowane jako abstract-class

Klasy abstrakcyjne to klasy, których nie można utworzyć. Istnieją, aby zapewnić wspólną funkcjonalność i specyfikacje interfejsu dla kilku konkretnych klas.


6
Testowanie klas abstrakcyjnych
Jak przetestować konkretne metody klasy abstrakcyjnej za pomocą PHPUnit? Spodziewałbym się, że będę musiał stworzyć jakiś obiekt w ramach testu. Chociaż nie mam pojęcia, jaka jest najlepsza praktyka w tym zakresie lub czy PHPUnit na to pozwala.



3
C #: klasy abstrakcyjne muszą implementować interfejsy?
Mój kod testowy w C #: namespace DSnA { public abstract class Test : IComparable { } } Powoduje następujący błąd kompilatora: error CS0535: 'DSnA.Test' does not implement interface member 'System.IComparable.CompareTo(object)' Ponieważ klasa Testjest klasą abstrakcyjną , dlaczego kompilator wymaga jej do zaimplementowania interfejsu? Czy ten wymóg nie powinien być …

11
Funkcje abstrakcyjne w języku Swift
Chciałbym stworzyć abstrakcyjną funkcję w szybkim języku. Czy to możliwe? class BaseClass { func abstractFunction() { // How do I force this function to be overridden? } } class SubClass : BaseClass { override func abstractFunction() { // Override } }

9
Właściwości abstrakcyjne PHP
Czy istnieje sposób na zdefiniowanie abstrakcyjnych właściwości klas w PHP? abstract class Foo_Abstract { abstract public $tablename; } class Foo extends Foo_Abstract { //Foo must 'implement' $property public $tablename = 'users'; }
126 php  oop  abstract-class 

7
Dlaczego klasa abstrakcyjna implementująca interfejs może pomijać deklarację / implementację jednej z metod interfejsu?
Ciekawa rzecz dzieje się w Javie, gdy używasz klasy abstrakcyjnej do implementacji interfejsu: może brakować niektórych metod interfejsu (tj. Nie ma ani abstrakcyjnej deklaracji, ani rzeczywistej implementacji), ale kompilator nie narzeka. Na przykład, biorąc pod uwagę interfejs: public interface IAnything { void m1(); void m2(); void m3(); } Następująca klasa …


17
Jak zaimplementować klasę abstrakcyjną w Rubim?
Wiem, że w rubinie nie ma pojęcia klasy abstrakcyjnej. Ale jeśli w ogóle trzeba to wdrożyć, jak się do tego zabrać? Próbowałem czegoś takiego ... class A def self.new raise 'Doh! You are trying to write Java in Ruby!' end end class B < A ... ... end Ale kiedy …

10
Idiom Pimpl vs czysty interfejs klasy wirtualnej
Zastanawiałem się, co skłoniłoby programistę do wybrania albo idiomu Pimpl, albo czystej wirtualnej klasy i dziedziczenia. Rozumiem, że idiom pimpl ma jedno wyraźne dodatkowe wskazanie dla każdej metody publicznej i narzutu tworzenia obiektów. Z drugiej strony klasa wirtualna Pure ma niejawne pośrednictwo (vtable) do dziedziczenia implementacji i rozumiem, że nie …

3
Jak tworzyć abstrakcyjne właściwości w klasach abstrakcyjnych Pythona
W poniższym kodzie tworzę podstawową klasę abstrakcyjną Base. Chcę, aby wszystkie klasy, które dziedziczą, Basezapewniały namewłaściwość, więc utworzyłem tę właściwość jako @abstractmethod. Potem stworzył podklasę Baseo nazwie Base_1, które mają za zadanie dostarczyć pewną funkcjonalność, ale nadal pozostają abstrakcyjne. W programie nie ma namewłasności Base_1, ale mimo to Python instatinuje …


4
`staticmethod` i` abc.abstractmethod`: czy to się połączy?
W mojej aplikacji w języku Python chcę utworzyć metodę, która będzie jednocześnie staticmethodrozszerzeniem a i abc.abstractmethod. Jak mam to zrobic? Próbowałem zastosować oba dekoratory, ale to nie działa. Jeśli to zrobię: import abc class C(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod @staticmethod def my_function(): pass Dostaję wyjątek *, a jeśli to zrobię: …

6
Konwencje nazewnictwa dla klas abstrakcyjnych
Wyraźnie pamiętam, że kiedyś wytyczną forsowaną przez Microsoft było dodanie sufiksu „Base” do klasy abstrakcyjnej, aby uniknąć faktu, że jest abstrakcyjna. Stąd mamy zajęcia jak System.Web.Hosting.VirtualFileBase, System.Configuration.ConfigurationValidatorBase, System.Windows.Forms.ButtonBase, i, oczywiście System.Collections.CollectionBase. Ale ostatnio zauważyłem, że wiele klas abstrakcyjnych we frameworku wydaje się nie przestrzegać tej konwencji. Na przykład wszystkie poniższe …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.