Estaba estudiando la anulación de métodos en Java cuando ai me encontré con la palabra clave this
. Después de buscar mucho sobre esto en Internet y otras fuentes, llegué a la conclusión de que la palabra clave this
se usa cuando el nombre de una variable de instancia es el mismo que el de la función de constructor . ¿Estoy en lo correcto o incorrecto?Uso de la palabra clave "this" en java
Respuesta
this
es un alias o un nombre para la instancia actual dentro de la instancia. Es útil para la eliminación de ambigüedades de las variables de instancia de los locales (incluidos los parámetros), pero se puede usar solo para referirse a variables y métodos de miembros, invocar otras sobrecargas de constructor o simplemente para referirse a la instancia . Algunos ejemplos de usos aplicables (no exhaustiva):
class Foo
{
private int bar;
public Foo() {
this(42); // invoke parameterized constructor
}
public Foo(int bar) {
this.bar = bar; // disambiguate
}
public void frob() {
this.baz(); // used "just because"
}
private void baz() {
System.out.println("whatever");
}
}
Vale la pena señalar: cuando se usa en un constructor, el 'this (...)' debe ser la primera instrucción. – nneonneo
Calificadores tales como 'this' o el nombre de clase para llamadas estáticas hacen que su código sea mucho más legible y ahorre mucho tiempo. En un segundo el lector conoce el alcance de las variables o métodos o su fuente. Me niego a leer/ayudar con problemas de código si los calificadores apropiados no se usan. No tengo tiempo para seguir los métodos o adivinar en qué clase se encuentran, especialmente si los ide modernos, como eclipse, tienen funciones de autocompletar en operaciones de guardado. – djmj
Esto se refiere objeto actual. Si tiene una clase con variables int A y un método xyz, parte de la clase tiene int A, solo para diferenciar a qué 'A' hace referencia, lo usará. Este es solo un caso de ejemplo.
public class Test
{
int a;
public void testMethod(int a)
{
this.a = a;
//Here this.a is variable 'a' of this instance. parameter 'a' is parameter.
}
}
Me gustaría modificar su idioma. El esta palabra clave se usa cuando necesita usar la variable global de clase en los constructores.
public class demo{
String name;
public void setName(String name){
this.name = name; //This should be first statement of method.
}
}
este es una referencia al objeto actual - el objeto cuyo método o constructor está siendo llamado. Puede hacer referencia a cualquier miembro del objeto actual desde un método de instancia o un constructor utilizando este.
Una cosa más que debe tenerse en cuenta es que esta palabra clave podría ser la primera declaración de su método.
Tiene razón, pero este es solo un escenario de uso, no una definición. La palabra clave this
se refiere al "objeto actual". Se usa principalmente para que un objeto pueda pasar a sí mismo como un parámetro a un método de otro objeto.
Así, por ejemplo, si hay un objeto llamado Person
, y un objeto llamado PersonSaver
, y se invoca Person.SaveYourself()
, entonces Person
sólo podría hacer lo siguiente: PersonSaver.Save(this)
;
Ahora, sucede que this
también se puede utilizar para eliminar la ambigüedad entre los datos de instancia y los parámetros del constructor o de los métodos, si resultan ser idénticos.
this
palabra clave puede utilizarse para (No se puede utilizar con métodos estáticos):
- Para obtener referencia de un objeto a través del cual se llama ese método dentro de él (método de instancia).
- Para evitar el campo sombreado por un método o parámetro de constructor.
- Para invocar constructor de la misma clase.
- En caso de método anulado,
this
se utiliza para invocar el método de la clase actual. - Para hacer referencia a una clase interna. mi.g
ClassName.this
- Para crear un objeto de la clase interna por ejemplo
enclosingObjectReference.new EnclosedClass
si ha knowladge sobre C, C++ o punteros, en ese idioma este es un puntero que apunta objeto en sí mismo. En java todo es referencia. Entonces es una referencia a sí mismo en java. Una de las necesidades de esta palabra clave es que:
pensar que esta es la clase de
public class MyClass
{
public int myVar;
public int myMethod(int myVar)
{
this.myVar = myVar; // fields is set by parameter
}
}
Si no hay esta palabra clave que se confunde es que este parametro o una clase de field.When utiliza este. myVar se refiere al campo de este objeto.
En general, el uso de 'esto' se reserva para las variables de instancia y métodos, no los métodos de la clase ...
métodos de clase" no puede utilizar la palabra clave this como no hay una instancia de este para referirse a ..."
http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
Aquí está un ejemplo trivial ...
public class Person {
private String name;
private int age;
private double weight;
private String height;
private String gender;
private String race;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge(){
return this.age;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double getWeight() {
return this.weight;
}
public void setHeight(String height) {
this.height = height;
}
public String getHeight() {
return this.height;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getGender() {
return this.gender;
}
public void setRace(String race) {
this.race = race;
}
public String getRace() {
return this.race;
}
public void displayPerson() {
System.out.println("This persons name is :" + this.getName());
System.out.println("This persons age is :" + this.getAge());
System.out.println("This persons weight is :" + this.getWeight());
System.out.println("This persons height is :" + this.getHeight());
System.out.println("This persons Gender is :" + this.getGender());
System.out.println("This persons race is :" + this.getRace());
}
}
Y para una instancia de una persona ....
public class PersonTest {
public static void main(String... args) {
Person me = new Person();
me.setName("My Name");
me.setAge(42);
me.setWeight(185.00);
me.setHeight("6'0");
me.setGender("Male");
me.setRace("Caucasian");
me.displayPerson();
}
}
Esto se utiliza en java. Podemos utilizar en la herencia & también utilizar en la sobrecarga de método método & anulación. Debido a que el parámetro real o el nombre de la variable de instancia tiene el mismo nombre, podemos utilizar esta palabra clave complsary. Pero algunas veces esto no es lo mismo que cuando no podemos usar esta palabra clave complsary ..... Por ejemplo: - class super { int x; super (int x) { this.x = x } }
En caso de variable miembro y el conflicto nombre de variable local, esta palabra clave puede ser usado para referirse variable miembro como,
public Loan(String type, double interest){
this.type = type;
this.interest = interest;
}
esta palabra clave tiene siguientes usos
1.Used para referirse instancia de clase de corriente variable
class Student{
int id;
String name;
student(int id,String name){
this.id = id;
this.name = name;
}
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
Student s1 = new Student(111,"Karan");
Student s2 = new Student(222,"Aryan");
s1.display();
s2.display();
}
}
este caso el parámetro y variable de instancia son los mismos es por eso que estamos utilizando este
2.Used para invocar constructor de la clase actual
class Student{
int id;
String name;
Student(){System.out.println("default constructor is invoked");}
Student(int id,String name){
this();//it is used to invoked current class constructor.
this.id = id;
this.name = name;
}
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
Student e1 = new Student(111,"karan");
Student e2 = new Student(222,"Aryan");
e1.display();
e2.display();
}
}
3.this palabra clave puede utilizarse para invocar el método clase actual (implícitamente)
4.Este se pueden pasar argumentos en la llamada al método
5.this se puede pasar argumento en la llamada al constructor
6.esto también se puede usar para devolver la instancia de clase actual
- 1. Java: cuándo utilizar la palabra clave 'this'
- 2. Utilizando la palabra clave 'this' en los constructores de Java
- 3. ¿Cómo se implementa la palabra clave "this" de java?
- 4. El uso de esta palabra clave Java
- 5. La palabra clave 'this' como propiedad
- 6. Significado de la palabra clave "this" en jQuery Vs MVC
- 7. palabra "this" en C++
- 8. ¿Cuándo debería usar la palabra clave "this" en C++?
- 9. "this" frente a la palabra clave "element" en X ++
- 10. Aprendizaje de Java, uso de la palabra clave sincronizada
- 11. el uso de la palabra clave privada
- 12. ¿Puedo forzar el uso de la palabra clave 'this' en C# .NET?
- 13. ¿Cuál es el significado real de la palabra clave "this"?
- 14. USO palabra clave en Mysql
- 15. Usando un parámetro ref con la palabra clave this?
- 16. Uso práctico de la palabra clave `stackalloc`
- 17. instancia del uso de la palabra clave
- 18. C# ref uso de la palabra clave
- 19. entendimiento palabra "this"
- 20. palabra clave foreach en java?
- 21. Jquery 'this' palabra clave y filtros básicos del selector
- 22. Java - utilizando la palabra clave 'super'
- 23. Ilustrando el uso de la palabra clave volátil en C#
- 24. Uso práctico de la palabra clave parcial en C#
- 25. Uso de la palabra clave auto en C STL ++
- 26. uso de la palabra clave "using" en C#
- 27. Uso de la palabra clave "global" en Python
- 28. ¿Hay alguna palabra clave en Java que sea similar a la palabra clave 'AS' de C#
- 29. as3: uso de esta palabra clave
- 30. Gson Java palabra clave reservada
No siempre. Puede haber varios casos. Por ejemplo, cuando quiere pasar su propia instancia a un método como parámetro, hace 'method (this)'. –
@Junior Bill gates: Es solo un uso válido de la palabra clave "this". – paulsm4