¿es posible usar un método de una clase abstracta? ¿cómo puedo usar un método de una clase sin tener una instancia?Usando un método de una clase abstracta
Respuesta
Si declara un método como static
, puede llamarlo directamente sin necesidad de una instancia de clase. De lo contrario, necesitarás tener una instancia de una clase derivada.
Dado que una clase abstracta no puede crearse una instancia directamente, no puede llamar directamente a un método de una clase abstracta a menos que sea un método estático. Pero se puede llamar a un método estático de una clase abstracta directamente, aquí está un ejemplo rápido:
#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;
}
Alternativamente, si usted tiene una instancia de una clase que se deriva de una clase abstracta, se puede tratar como una instancia de la clase abstracta, y puede invocar cualquier método sobre ella.
La clase abstracta no implica que no tenga una instancia, implica que el tipo de tiempo de ejecución de la instancia es realmente una clase derivada que proporciona implementaciones para las funciones virtuales puras en la clase base abstracta. Pero no todas las funciones miembro de una clase abstracta tienen que ser puramente virtuales, puede tener una combinación de funciones concretas y abstractas.
Cuando llama a funciones miembro "en la clase abstracta", todas las funciones virtuales, incluidas las virtuales puras, se llaman polimórficamente. Entonces la anulación definida en la clase derivada se ejecuta. Las funciones no virtuales llaman a la definición en la clase base, no puede tener funciones concretas puras, por lo que incluso una clase abstracta debe proporcionar la implementación de funciones no virtuales.
Incluso es posible que una función virtual pura tenga una implementación proporcionada por la clase base abstracta. Aún se debe proporcionar una anulación, pero luego la anulación puede llamar a la implementación de la clase base.
- 1. Método vacío en una clase abstracta
- 2. ¿Debe una clase abstracta tener al menos un método abstracto?
- 3. método genérico en la clase abstracta
- 4. serialización de una clase abstracta
- 5. php clase abstracta extendiendo otra clase abstracta
- 6. Haciendo una clase abstracta sin ningún método virtual puro
- 7. devolver una lista de clase abstracta
- 8. Unidad probando una clase que hereda de una clase abstracta
- 9. Derivar clase abstracta de la clase no abstracta
- 10. Debo crear un método estático o una superclase abstracta
- 11. ¿Cómo me burlo de un método heredado de una clase abstracta con EasyMock?
- 12. ¿Puede un cierre Groovy extender una clase abstracta
- 13. Cómo llamar al método de clase abstracta en java
- 14. método de la clase abstracta Scala que devuelve una nueva clase correspondiente objeto secundario
- 15. Heredar de una clase o una clase abstracta
- 16. Cómo y cuándo usar una clase abstracta
- 17. ¿Cómo implementar una clase abstracta en F #?
- 18. ¿Cómo implementar una clase abstracta en ruby?
- 19. devolver una clase abstracta desde una función
- 20. ¿Puedo forzar un método de una clase abstracta para devolver algo?
- 21. Mocking método concreto en clase abstracta utilizando phpunit
- 22. que imita una llamada en un método público de una clase abstracta y sin la subclasificación de la clase abstracta, utilizando Mockito prefererably
- 23. clase abstracta estática
- 24. Django: consultar una clase base abstracta
- 25. Python - Prueba de una clase base abstracta
- 26. Comportamiento extraño con el método parametrizado en la clase abstracta
- 27. ¿Es un constructor público en una clase abstracta un código?
- 28. C++: Crear clase abstracta con método abstracto y anular el método en una subclase
- 29. ¿Cómo implementar parcialmente un contrato en una clase base abstracta?
- 30. Clase abstracta sin métodos abstractos
muchas gracias – cemregoksu