Czy możliwe jest użycie metody abstrakcyjnej klasy? Jak mogę użyć metody klasy bez instancji?Korzystanie z metody abstrakcyjnej klasy
Odpowiedz
Jeśli zadeklarujesz Sposób static
, można nazwać to bezpośrednio, bez konieczności instancji klasy. W przeciwnym razie musisz mieć instancję klasy pochodnej.
Ponieważ klasa abstrakcyjna nie może być instancja bezpośrednio, nie można wywołać metodę z klasy abstrakcyjnej bezpośrednio chyba jest to metoda statyczna. Ale można nazwać metodą statyczną klasy abstrakcyjnej bezpośrednio, oto krótki przykład:
#include <iostream>
#include <ostream>
#include <fstream>
using namespace std;
class stest{
public:
static void test();
virtual void a() = 0;
};
void stest::test(){ cout << "test\n"; }
int main(){
stest::test();
return 0;
}
Ewentualnie, jeśli masz instancję klasy, która pochodzi od klasy abstrakcyjnej, można traktować go jako instancja klasy abstrakcyjnej i może wywoływać na niej dowolne metody.
abstrakcyjna klasa nie oznacza, że nie ma instancji, oznacza to, że rodzaj runtime instancji jest rzeczywiście niektóre klasy pochodnej, która dostarcza implementacje dla czystych funkcji wirtualnych w abstrakcyjnej klasy bazowej. Ale nie wszystkie funkcje składowe klasy abstrakcyjnej muszą być czysto wirtualne, możesz mieć mieszankę funkcji konkretnych i abstrakcyjnych.
Po wywołaniu funkcji składowych „w klasy abstrakcyjnej”, wszystkie funkcje wirtualne, w tym czystych wirtualne, są nazywane polimorficznie. Tak więc nadpisanie zdefiniowane w klasie pochodnej zostanie wykonane. Funkcje inne niż wirtualne wywołują definicję w klasie bazowej, nie można mieć czystych konkretnych funkcji, więc nawet klasa abstrakcyjna musi zapewniać implementację funkcji nie-wirtualnych.
Jest nawet możliwe, że funkcja czysto wirtualna ma implementację zapewnioną przez abstrakcyjną klasę podstawową. Nadpisanie nadal musi być zapewnione, ale wówczas nadpisanie może wywołać implementację klasy podstawowej.
- 1. Określanie typu zwracanej abstrakcyjnej metody z klasy bazowej według PODKLASA
- 2. Rozwiąż Java Generic typ błędu z klasy abstrakcyjnej metody
- 3. Klasy przypadków dziedziczących z klasy abstrakcyjnej
- 4. Wymuszenie zastąpienia metody nie abstrakcyjnej
- 5. instancja klasy abstrakcyjnej
- 6. Uzyskaj wszystkie odziedziczone klasy ogólnej klasy abstrakcyjnej
- 7. Jak zmusić dziecko klasy abstrakcyjnej do wdrożenia metody statycznej?
- 8. Błąd serializacji klasy abstrakcyjnej z doładowaniem
- 9. Korzystanie z .getDeclaredMethod do uzyskania metody z klasy rozszerzającej inną
- 10. Jak przedłużyć klasę enum z klasy abstrakcyjnej?
- 11. Deserializowanie klasy abstrakcyjnej w Gson
- 12. Uzyskaj nazwę klasy betonu od klasy abstrakcyjnej
- 13. Zastępowanie pól klasy abstrakcyjnej Java
- 14. Definiowanie metody abstrakcyjnej bez określania parametrów
- 15. ForeignKey relacji do klasy abstrakcyjnej
- 16. Python - Testowanie abstrakcyjnej klasy bazowej
- 17. Korzystanie z ogólnej klasy bazowej jako parametr metody
- 18. Używanie Moq do testowania abstrakcyjnej klasy
- 19. Jak wywołać metodę klasy abstrakcyjnej w java
- 20. Bajt Buddy: Utwórz implementację dla abstrakcyjnej klasy
- 21. Dlaczego nie możemy utworzyć instancji interfejsu lub klasy abstrakcyjnej w języku Java bez metody anonimowej klasy?
- 22. Czy można odwołać się do metody klasy abstrakcyjnej w metodzie klasy, która jej nie rozszerza?
- 23. rodzajowych: dziedziczenie z klasy abstrakcyjnej, która implementuje interfejs
- 24. Korzystanie z metody eval() JavaScriptu
- 25. Wyjątek NHibernate DuplicateMappingException podczas odwzorowywania klasy abstrakcyjnej i podklasy klasy abstrakcyjnej
- 26. Różne metody zwracania metody abstrakcyjnej w języku Java bez odlewania
- 27. Konstruktor - wzór bez abstrakcyjnej klasy/interfejsu
- 28. Nierozwiązany zewnętrzny (konstruktor klasy abstrakcyjnej/destruktor)
- 29. Mix w abstrakcyjnej klasy i namedtuple
- 30. wirtualny desctructor na czystym abstrakcyjnej klasy bazowej
dziękuję bardzo – cemregoksu