Conceptos de instanciación de objetos y variables de instancia

7

Soy un ingeniero de redes y estoy aprendiendo a desarrollar software en mi tiempo libre. Tengo algunas dudas sobre algunos conceptos OOP. Estoy tratando de comprender cuál es la diferencia cuando se usan estos términos y frases.

  • Cuando se le pide a uno que cree una instancia de una clase, ¿es esta otra manera de decir crear un objeto para esa clase? Si estoy equivocado, por favor explique lo que realmente es insultante.

  • ¿Los objetos creados al crear instancias se llaman "variables de instancia"?

pregunta Nava Moore 06.07.2017 - 22:35

2 respuestas

9
  • Crear una instancia de una clase es crear un objeto vivo del tipo de esa clase. La clase en sí está latente. Tienes que "generar" objetos usando esa clase como plantilla.
  • "Si es así, ¿significa que el objeto creado también se llama la variable de instancia?" . No. Una variable de instancia es una cosa totalmente diferente. El objeto es un objeto. Por lo general, tiene una variable del tipo de la clase que es una referencia al objeto. Una variable de instancia es una variable que vive dentro del objeto y que puede tener diferentes valores para diferentes objetos (instancias), a diferencia de una clase variable que tiene el mismo valor para todas las instancias.

Ejemplo (en Java):

public class Thing { public static String hairColor="blue"; public static String suitColor="red"; private String name; public Thing(String s){ name=s; } public String getName(){ return name; } public String getHairColor(){ return hairColor; } public String getSuitColor(){ return suitColor; } public void causeTrouble(){ // this is a method, this is what Things DO } }

Como es sabido, todos los Thing s tienen cabello azul y trajes rojos. Así que esas son variables de clase. Son estáticos. Tienen el mismo valor para todas las instancias. Si el valor de esas variables se cambiara durante el tiempo de ejecución, cambiarán para todos los Thing s. Tal vez deberíamos hacer que esas variables de clase sean "finales" también, para asegurarnos de que el cabello siempre será azul y los trajes siempre sean rojos.

Pero Thing s tienen nombres diferentes. El nombre es una variable de instancia, pueden tener diferentes valores para diferentes instancias. Si un nombre cambia, lo hace solo para una instancia particular de Thing .

Veamos una prueba:

public class Test {

    public static void main(String[] args) {

    Thing t1,t2; //declare two variables that can point to Things.
    // right now they are not pointing to anything, they are null.

    t1= new Thing("Thing One");  // spawn a new Thing object and make t1 point to it
    t2= new Thing("Thing Two"); // spawn a new Thing object and make t2 point to it

    // Now let's print info about each object
    System.out.println(t1.getName());
    System.out.println(t1.getHairColor());
    System.out.println(t1.getSuitColor());
    System.out.println(t1);
    System.out.println();
    System.out.println(t2.getName());
    System.out.println(t2.getHairColor());
    System.out.println(t2.getSuitColor());
    System.out.println(t2);

}

t1 y t2 son variables de tipo Thing . No son Thing s, solo apuntan a Thing s. Una vez instanciado, se puede acceder a Thing s de vida real con esas variables. (Esas no son variables de instancia, son solo variables).

Output:

Thing One
blue
red

Thing Two
blue
red
    
respondido por el Tulains Córdova 07.07.2017 - 02:40
6
  

Cuando a uno se le pide que cree una instancia de una clase, ¿es esta otra manera de   diciendo crear un objeto para esa clase?

Esto significa crear un objeto de el tipo de esa clase. En la mayoría de los lenguajes orientados a objetos, las clases son tipos . "Crear una instancia de una clase" no es muy preciso, pero probablemente significa "crear una instancia de un objeto del tipo definido por la clase". Por ejemplo, la cadena es una clase común en los idiomas OO. Instalar una cadena significa "crear una instancia de un objeto de tipo cadena".

  

Si es así, significa que el objeto creado también se llama la instancia   variable?

El término "variable de instancia" generalmente significa "estado interno de un objeto". Usando el ejemplo de cadena, un objeto de tipo cadena no es una variable de instancia que pertenece a la clase de cadena. Un objeto de cadena puede tener una matriz de caracteres que es una variable de instancia que contiene los datos de cadena reales. La matriz de caracteres pertenece a una instancia específica de cadena: no a la clase en sí, no a otras cadenas.

    
respondido por el user22815 06.07.2017 - 22:52

Lea otras preguntas en las etiquetas