Dziedziczenie to system programowania obiektowego, który umożliwia obiektom obsługę operacji zdefiniowanych przez typy przednie bez konieczności podawania własnej definicji. Jest to główny wektor polimorfizmu w programowaniu obiektowym.
class A { public: void eat(){ cout<<"A";} }; class B: virtual public A { public: void eat(){ cout<<"B";} }; class C: virtual public A { public: void eat(){ cout<<"C";} }; class D: public B,C { public: void eat(){ cout<<"D";} }; int main(){ A *a = new D(); a->eat(); } Rozumiem …
Nie mogę znaleźć wielu informacji o niestandardowych klasach wyjątków. Co ja wiem Możesz zadeklarować swoją niestandardową klasę błędu i pozwolić jej dziedziczyć z StandardError, więc może być rescued: class MyCustomError < StandardError end Pozwala to podnieść go za pomocą: raise MyCustomError, "A message" a później otrzymaj tę wiadomość podczas ratowania …
Dlaczego przyjaźń nie jest przynajmniej opcjonalnie dziedziczona w C ++? Rozumiem, że przechodniość i refleksyjność są zabronione z oczywistych powodów (mówię to tylko po to, by odrzucić proste odpowiedzi na FAQ), ale brak czegoś w rodzaju virtual friend class Foo;zagadek mnie zaskakuje. Czy ktoś zna historyczne tło tej decyzji? Czy …
Na przykład mam następującą klasę bazową: class BaseClass(object): def __init__(self, classtype): self._type = classtype Z tej klasy wyprowadzam kilka innych klas, np class TestClass(BaseClass): def __init__(self): super(TestClass, self).__init__('Test') class SpecialClass(BaseClass): def __init__(self): super(TestClass, self).__init__('Special') Czy istnieje ładny, pythonowy sposób dynamicznego tworzenia tych klas przez wywołanie funkcji, które umieszcza nową klasę …
Załóżmy, że mam ten interfejs public interface IFoo { ///<summary> /// Foo method ///</summary> void Foo(); ///<summary> /// Bar method ///</summary> void Bar(); ///<summary> /// Situation normal ///</summary> void Snafu(); } I ta klasa public class Foo : IFoo { public void Foo() { ... } public void Bar() { …
Buduję bibliotekę ORM z myślą o ponownym wykorzystaniu i prostocie; wszystko idzie dobrze, z wyjątkiem tego, że utknąłem w głupim ograniczeniu dziedziczenia. Proszę wziąć pod uwagę poniższy kod: class BaseModel { /* * Return an instance of a Model from the database. */ static public function get (/* varargs */) …
Mam dwie klasy: Actioni MyAction. Ten ostatni jest deklarowany jako: class MyAction extends Action {/* some methods here */} Potrzebuję tylko metody w Actionklasie (tylko w niej, ponieważ klas dziedziczonych będzie dużo, a nie chcę implementować tej metody we wszystkich), która zwróci classname z wywołania statycznego. Oto o czym mówię: …
Mam funkcję o tej samej nazwie, ale z innym podpisem w klasach bazowych i pochodnych. Kiedy próbuję użyć funkcji klasy bazowej w innej klasie, która dziedziczy z klasy pochodnej, pojawia się błąd. Zobacz poniższy kod: class A { public: void foo(string s){}; }; class B : public A { public: …
Może się to wydawać prostym pytaniem, ale nie mogę znaleźć odpowiedzi nigdzie indziej. Załóżmy, że mam: class Abstract { public: virtual void foo() = 0; virtual void bar(); } class Derived : Abstract { public: virtual void foo(); } Czy to w porządku, że klasa Derived nie implementuje funkcji bar …
Wczoraj odbyłem dwugodzinny telefoniczny wywiad techniczny (który zdałem, woohoo!), Ale całkowicie stłumiłem następujące pytanie dotyczące dynamicznego wiązania w Javie. Jest to podwójnie zagadkowe, ponieważ uczyłem tego pojęcia studentom, kiedy byłem asystentem kilka lat temu, więc perspektywa, którą podałem im dezinformację, jest trochę niepokojąca ... Oto problem, który mi dano: /* …
Przeglądałem efektywne slajdy scala i na slajdzie 10 wspomina się, że nigdy nie używaj valich traitjako abstrakcyjnych członków i używaj defzamiast tego. Slajd nie wspomina szczegółowo, dlaczego użycie abstrakcji valw a traitjest anty-wzorcem. Byłbym wdzięczny, gdyby ktoś mógł wyjaśnić najlepsze praktyki dotyczące używania wartości val vs def w cechach metod …
Otrzymuję ten błąd: TypeError: object.__init__() takes no parameters podczas uruchamiania kodu nie widzę jednak, co robię źle: class IRCReplyModule(object): activated=True moduleHandlerResultList=None moduleHandlerCommandlist=None modulename="" def __init__(self,modulename): self.modulename = modulename class SimpleHelloWorld(IRCReplyModule): def __init__(self): super(IRCReplyModule,self).__init__('hello world')
Mam prosty kod Java, który wygląda podobnie do tego w swojej strukturze: abstract public class BaseClass { String someString; public BaseClass(String someString) { this.someString = someString; } abstract public String getName(); } public class ACSubClass extends BaseClass { public ASubClass(String someString) { super(someString); } public String getName() { return "name …
Mam aplikację opartą na Squeryl. Moje modele definiuję jako klasy przypadków, głównie dlatego, że uważam za wygodne metody kopiowania. Mam dwa modele, które są ze sobą ściśle powiązane. Pola są takie same, wiele operacji jest wspólnych i mają być przechowywane w tej samej tabeli DB. Ale jest pewne zachowanie, które …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.