Dentro de un método m en una clase C, ¿no es this.getClass()
siempre C?Dentro de un método m en una clase C, ¿no es this.getClass() siempre C?
6
A
Respuesta
12
No, no lo es. Si hay subclases
class C {
Class m() {
return this.getClass();
}
}
class D extends C { }
y luego se puede tener:
C c = new D();
c.m(); // returns D.class
8
Nop:
public class C
{
public void m()
{
System.out.println(this.getClass());
}
}
public class Child extends C {}
continuación:
new Child().m(); // Prints Child
2
Nº Ejemplo:
public class Test {
public static void main(String [] args) throws Exception {
A a = new B();
a.reportThis();
}
}
class A {
public void reportThis() {
System.err.println(this.getClass().getName());
}
}
class B extends A { }
1
La palabra clave se refiere al objeto (instancia de la clase) que está dentro del alcance. Significa la instancia en la que se llamó el método, que a su vez significa que las instancias de las subclases también pueden ser referidas por la palabra clave 'this'.
Cuestiones relacionadas
- 1. C# - ¿Es posible reemplazar un método en una clase base dentro de la misma clase (NO una clase derivada)?
- 2. por qué el método principal en C# siempre se coloca dentro de la clase pero no en C++
- 3. Declarar una clase o estructura dentro de un método en C#
- 4. Pasar un objeto clase C# dentro y fuera de una clase DLL C++
- 5. Llamar a un método de clase dentro de una clase
- 6. Cómo llamar a una clase C++ y su método desde un archivo c
- 7. C++ - construcción de un objeto dentro de una clase
- 8. ¿Definir enumeraciones dentro de un método en C#?
- 9. Llamada en C++ una función no miembro dentro de una clase con un método con el mismo
- 10. ¿Qué es un "método estático" en C#?
- 11. define una estructura dentro de una clase en C++
- 12. C++, la clase como parámetro a un método, no template
- 13. En Ruby, dentro de un método de clase, ¿es la clase o una instancia?
- 14. En C# ¿cuál es la diferencia entre un destructor y un método Finalize en una clase?
- 15. ¿Por qué el soporte de C# no es const en un nivel de clase/método?
- 16. Método estático de una clase estática frente a un método estático de una clase no estática (C#)
- 17. ¿Cuál es el alcance de una función c definida dentro de la clase objetivo-c?
- 18. ASP.Net C# ResolveClientUrl dentro Clase
- 19. ¿NULL siempre es cero en C?
- 20. Representando una Genérico Método C# en una clase UML Diagrama
- 21. Clase declarada dentro de otra clase en C#
- 22. Llamando al método C# dentro de un programa Java
- 23. C++ Plantilla anidada Clase Método Método
- 24. ¿Es una COMException de 0x80040154 siempre 'Clase no registrada'?
- 25. ¿No es una matriz/nombre de matriz siempre un puntero al primer elemento en C?
- 26. Objective-C: Importar encabezados en .ho .m?
- 27. Envolviendo una clase no heredable en C#
- 28. ¿Llamar a una función dentro de un método de clase?
- 29. Objective-C múltiples definiciones de clase en una .h y .m
- 30. Objetivo C - ¿Cómo agregar un método a una clase existente?
Copiado de [IAQ de Java: dentro de un método m en una clase C, ¿no es this.getClass() siempre C?] (Http://norvig.com/java-iaq.html#this.class) por Peter Norvig. – Dori