La palabra clave super es usada para acceder y llamar funciones del padre de un objeto. Las expresiones super.prop y super son válidas en cualquier definición de método tanto para clases como para objetos literales (en-US),
¿Qué es this y super en Java?
Super en java – Si this nos sirve para hacer referencia a la instancia actual del objeto, super nos sirve para hacer lo propio con la clase padre de nuestro objeto (la clase de la se hace el extends ), vamos que nos permite acceso a los constructores, métodos y atributos de la clase de la que hereda.
package thisysuper; import java.awt.Dimension; public class Imagen extends Archivo public Imagen(String nombre, String extension, String ruta, Integer ancho, Integer alto) public Imagen(String nombre, String extension, String ruta, Dimension dimensiones) public Integer getAncho() public void setAncho(Integer ancho) public Integer getAlto() public void setAlto(Integer alto) @Override public String toString() } En este ejemplo vemos como en el método toString() usamos el super para hacer la llamada al método del padre, aunque en este caso estamos haciendo la llamada al método con el mismo nombre del padre no existe nada que nos impida llamar a otro de sus métodos o a todos los que queramos.
public class Main } Como el toString() de la clase Imagen llama al de la clase Archivo y luego le concatena los valores de los atributos de la clase imagen el resultado final es nombre del archivo junto con las dimensiones. También tenemos un ejemplo de una llamada a uno de los constructores de la clase padre desde uno de los constructores para inicializar las propiedades de la clase padre al crear una nueva instancia de la clase hija (en realidad, se está llamando a 2 de los constructores de la clase padre, pero eso lo veremos más adelante).
¿Qué es súper en Poo?
Básicamente es un shortcut que permite acceder a la clase base de una clase derivada y delegar llamadas a métodos de esta, sin tener que conocer ni escribir el nombre de la clase base.
¿Cómo llamar a un constructor en Java?
Puedes llamar un contructor desde otro constructor usando el keyword this. La única restricción en su uso es que debe ser la primera sentencia en el constructor.
¿Qué palabra clave se emplea para heredar una superclase?
Codificación aprenderaprogramar.com: CU00686B – EJEMPLO DE HERENCIA EN JAVA. EXTENDS Y SUPER. Para declarar la herencia en Java usamos la palabra clave extends. Ejemplo: public class MiClase2 extends Miclase1. Para familiarizarte con la herencia te proponemos que escribas y estudies un pequeño programa donde se hace uso de ella. Escribe el código de las clases que mostramos a continuación. //Código de la clase Persona ejemplo aprenderaprogramar.com public class Persona //Métodos public String getNombre () public String getApellidos () public int getEdad () } //Cierre de la clase //Código de la clase profesor, subclase de la clase Persona ejemplo aprenderaprogramar.com public class Profesor extends Persona //Cierre del constructor //Métodos específicos de la subclase public void setIdProfesor (String IdProfesor) public String getIdProfesor () public void mostrarNombreApellidosYCarnet() } //Cierre de la clase //Código de test aprenderaprogramar.com public class TestHerencia1 } //Cierre de la clase El diagrama de clases y el resultado del test son del tipo que mostramos a continuación: Profesor de nombre: Juan Hernández García con Id de profesor: Prof 22-387-11 Los aspectos a destacar del código son: a) La clase persona es una clase “normal” definida tal y como lo venimos haciendo habitualmente mientras que la clase Profesor es una subclase de Persona con ciertas peculiaridades.
B) Los objetos de la subclase van a tener campos nombre, apellidos y edad (heredados de Persona) y un campo específico IdProfesor. El constructor de una subclase ha de llevar obligatoriamente como parámetros al menos los mismos parámetros que el constructor de la superclase. c) El constructor de la subclase invoca al constructor de la superclase.
Para ello se incluye, obligatoriamente, la palabra clave super como primera línea del constructor de la subclase. La palabra super irá seguida de paréntesis dentro de los cuales pondremos los parámetros que requiera el constructor de la superclase al que queramos invocar.
- En este caso solo teníamos un constructor de superclase que requería tres parámetros. Si p.ej.
- Hubiéramos tenido otro constructor que no requiriera ningún parámetro podríamos haber usado uno u otro, es decir, super(nombre, apellidos, edad) ó super(), o bien ambos teniendo dos constructores para la superclase y dos constructores para la subclase.
Ejemplo: En la superclase: public Persona() public Persona (String nombre, String apellidos, int edad) En la subclase: public Profesor () public Profesor (String nombre, String apellidos, int edad) Modifica el código de las clases Persona y Profesor para que queden con dos constructores tal y como hemos mostrado aquí.
- Crea objetos de ambos tipos en BlueJ y prueba sus métodos.
- ¿Qué ocurre si olvidamos poner super como primera línea de la subclase? Hay dos posibilidades: si la superclase tiene un constructor sin parámetros, el compilador incluirá en segundo plano super de forma automática y no saltará un error.
- De cualquier manera se considera contrario al buen estilo de programación, ya que no queda claro si se trata de un olvido.
Por ello incluiremos siempre la palabra clave super. La otra posibilidad es que no haya un constructor sin parámetros, en cuyo caso saltará un error. A modo de resumen: la inicialización de un objeto de una subclase comprende dos pasos. La invocación al constructor de la superclase (primera línea del constructor: super) y el resto de instrucciones propias del constructor de la subclase.
- EJERCICIO Se plantea desarrollar un programa Java que permita la gestión de una empresa agroalimentaria que trabaja con tres tipos de productos: productos frescos, productos refrigerados y productos congelados.
- Todos los productos llevan esta información común : fecha de caducidad y número de lote.
- A su vez, cada tipo de producto lleva alguna información específica,
Los productos frescos deben llevar la fecha de envasado y el país de origen. Los productos refrigerados deben llevar el código del organismo de supervisión alimentaria. Los productos congelados deben llevar la temperatura de congelación recomendada. Crear el código de las clases Java implementando una relación de herencia desde la superclase Producto hasta las subclases ProductoFresco, ProductoRefrigerado y ProductoCongelado.
- Cada clase debe disponer de constructor y permitir establecer (set) y recuperar (get) el valor de sus atributos y tener un método que permita mostrar la información del objeto.
- Crear una clase testHerencia2 con el método main donde se cree un objeto de cada tipo y se muestren los datos de cada uno de los objetos creados.
Puedes comprobar si tu respuesta es correcta consultando en los foros aprenderaprogramar.com. Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo. Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.
¿Qué es top en Java?
Pilas que “Recuerdan” – La Pila es una estrucutra de datos donde las inserciones y recuperaciones/borrados de datos se hacen en uno de los finales, que es conocido como el top de la pila. Como el ltimo elemento insertado es el primero en recuperarse/borrarse, los desarrolladores se refieren a estas pilas como pilas LIFO ( last-in, first-out ). Como muestra la figura anterior, las pilas se construyen en memoria. Por cada dato insertado, el itm superior anterior y todos los datos inferiores se mueven hacia abajo. Cuando llega el momento de sacar un tem de la pila, se recpupera y se borra de la pila el tem superior (que en la figura anterior se revela como “third” ).
Pilas que contienen direcciones de retorno: Cuando el cdigo llama a un mtodo, la direccin de la primera instruccin que sigue a la llamada se inserta en la parte superior de la pila de llamadas de mtodos del thread actual. Cuando el mtodo llamado ejecuta la instruccin return, se saca la direccin de la parte superior de la pila y la ejecucin contina en sa direccin. Si un mtodo llama a otro mtodo, el comportamiento LIFO de la pila asegura que la instruccin return del segundo mtodo transfiere la ejecucin al primer mtodo, y la del primer mtodo transfiere la ejecucin al cdigo que sigue al cdigo que llam al primer mtodo. Como resultado una pila “recuerda” las direcciones de retorno de los mtodos llamados. Pilas que contienen todos los parmetros del mtodo llamado y las variables locales: Cuando se llama a un mtodo, la JVM reserva memoria cerca de la direccin de retorno y almacena todos los parmetros del mtodo llamado y las variables locales de ese mtodo. Si el mtodo es un mtodo de ejemplar, uno de los parmetros que almacena en la pila es la referencia this del objeto actual.
Es muy comn implementar una pila utilizando un array uni-dimensional o una lista de enlace simple. En el escenario del array uni-dimensional, una variable entera, tpicamente llamada top, contiene el ndice de la parte superior de la pila. De forma similar, una variable de referencia, tambin nombrada noramlmente como top, referencia el nodo superior del escenario de la lista de enlace simple.
- He modelado mis implementaciones de pilas despus de encontrar la arquitectura del API Collections de Java.
- Mis implementaciones constan de un interface Stack para una mxima flexibilidad, las clases de implementacin ArrayStack y LinkedListStack, y una clase de soporte FullStackException,
- Para facilitar su distribucin, he empaquetado estas clases en un paquete llamado com.javajeff.cds, donde cds viene de estructura de datos complejas,
El siguiente listado presenta el interface Stack : // Stack.java package com.javajeff.cds; public interface Stack Sus cuatro mtodos determinan si la pila est vaca, recuperan el elemento superior sin borrarlo de la pia, situan un elemento en la parte superior de la pila y el ltimo recuera/borra el elemento superior.
Aparte de un constructor especfico de la implementacin, su programa nicamente necesita llamar a estos mtodos. El siguiente listado presenta una implementacin de un Stack basado en un array uni-dimensional: // ArrayStack.java package com.javajeff.cds; public class ArrayStack implements Stack public boolean isEmpty () public Object peek () public void push (Object o) public Object pop () } ArrayStack revela una pila como una combinacin de un ndice entero privado top y variables de referencia de un array uni-dimensional stack,
top identifica el elemento superior de la pila y lo inicializa a -1 para indica que la pila est vaca. Cuando se crea un objeto ArrayStack llama a public ArrayStack(int maxElements) con un valor entero que representa el nmero mximo de elementos. Cualquier intento de sacar un elemento de una pila vaca mediante pop() resulta en el lanzamiento de una java.util.EmptyStackException,
De forma similar, cualquier intento de poner ms elementos de maxElements dentro de la pila utilizando push(Object o) lanzar una FullStackException, cuyo cdigo aparece en el siguiente listado: // FullStackException.java package com.javajeff.cds; public class FullStackException extends RuntimeException Por simetra con EmptyStackException, FullStackException extiende RuntimeException,
Como resultado no se necesita aadir FullStackException a la clausula throws del mtodo. El siguiente listado presenta una implementacin de Stack utilizando una lista de enlace simple: // LinkedListStack.java package com.javajeff.cds; public class LinkedListStack implements Stack private Node top = null; public boolean isEmpty () public Object peek () public void push (Object o) public Object pop () } LinkedListStack revela una pila como una combinacin de una clase anidada privada de alto nivel llamada Node y una variable de referencia privada top que se inicialia a null para indicar una pila vaca.
- Al contrario que su contrapartida del array uni-dimensional, LinkedListStack no necesita un constructor ya que se expande dinmicamente cuando se ponen los tems en la pila.
- As, void push(Object o) no necesita lanzar una FullStackException,
- Sin embargo, Object pop() si debe chequear si la pila est vaca, lo que podra resultar en el lanzamiento de una EmptyStackException,
Ahora que ya hemos visto el interface y las tres clases que generan mis implementaciones de las pilas, juguemos un poco. El siguiente listado muestra casi todo el soporte de pilas de mi paquete com.javajeff.cds : // StackDemo.java import com.javajeff.cds.*; class StackDemo static void stackDemo (Stack s) catch (FullStackException e) System.out.println (); while (!s.isEmpty ()) System.out.println (s.pop ()); try catch (java.util.EmptyStackException e) System.out.println (); } } Cuando se ejecuta StackDemo, produce la siguiente salida: ArrayStack Demo – Pushing “Hello” Pushing “World” Pushing StackDemo object Pushing Character object Pushing Thread object Pushing “One last item” One push too many Thread C World Hello One pop too many LinkedListStack Demo – Pushing “Hello” Pushing “World” Pushing StackDemo object Pushing Character object Pushing Thread object Pushing “One last item” One last item Thread C World Hello One pop too many
¿Qué es un switch en Java?
Sentencias Switch en Java: ¿Qué son y Cómo se usan?
- Switch es un condicional de selección de Java, una instrucción de múltiples vías que evalúa distintas opciones o “casos” y selecciona una opción entre varias.
- El condicional switch es una forma de expresión de anidación múltiple de instrucciones ifelse.
- Es útil a la hora de definir por ejemplo, un menú de usuario en aplicaciones que se ejecutan por consola.
- Switch evalúa la expresión y programa distintas salidas de acuerdo a las opciones que hayamos puesto.
¿Cuáles son las clases en Java?
¿Qué es una clase en Java? – Las clases son uno de los subconjuntos de los objetos y son uno de los elementos más importantes para programar en este lenguaje. Estos elementos sirven para crear moldes o plantillas que pueden ser replicados para categorizar objetos con atributos similares. > Introducción al lenguaje de programación Javascript “> Hay diferentes razas de gatos: siameś, persa, himalayo. aunque todas sean diferentes cuentan con atributos que la definen como un gato: mamífero, felino, carnívoro, cuatro patas. Las clases funcionan de forma similar: permiten identificar, a pesar de las especies a todos los animales que sean gatos. Así, con las clases puedes identificar muchas razas de gatos (o instancias) que comparten los mismos atributos, pero que, al ser distintos, tienen valores diferentes. Naturalmente, cada instancia puede tener diferente información propiedades o atributos propios (origen, color específico, talla), pero se mantendrán dentro de la misma clase.
¿Cuándo se usa POO?
Conclusión – La Programación Orientada a Objetos es actualmente el paradigma que más se utiliza para diseñar aplicaciones y programas informáticos. Son muchas sus ventajas, principalmente cuando necesitas resolver desafíos de programación complejos. Permite una mejor estructura de datos y reutilización del código, lo que facilita el ahorro de tiempo a largo plazo.
- Eso sí, para ello se requiere pensar bien en la estructura del programa, planificar al comienzo de la codificación, así como analizar los requisitos en clases simples y reutilizables que se pueden usar para diseñar instancias de objetos.
- Tus ajustes pueden estar impidiendo que veas este contenido.
- Probablemente tienes desactivada las cookies de «Experiencia».
Tus ajustes pueden estar impidiendo que veas este contenido. Probablemente tienes desactivada las cookies de «Experiencia». Conocer la Programación Orientada a Objetos es algo básico para cualquier programador que se está iniciando en el mundo del desarrollo de software.
¿Cuáles son los operadores en Java?
Operadores en JAVA Existen tres tipos de operadores: Aritméticos, Relacionales y Lógicos.
¿Qué significa la palabra VOID en Java?
La palabra void significa ‘espacio completamente vacío ‘ según el diccionario. Este término, cuando se utiliza en programación, se refiere a un retorno de ‘nada’ – un ‘valor vacío’ por así decirlo.
¿Cómo llamar una herencia en Java?
¿Qué es la herencia en Java? – La herencia en Java implica que una superclase o clase base hereda sus funciones y atributos a una subclase o clase derivada. La palabra reservada que nos permite realizar herencia entre clases es extends, Cabe mencionar que en Java los constructores de las clases no se heredan; sin embargo, pueden ejecutarse en la clase hija con el método super(),
¿Qué significa la palabra new en Java?
El operador new permite a los desarrolladores crear una instancia de un tipo de objeto definido por el usuario o de uno de los tipos de objeto integrados que tiene un función constructora.
¿Dónde debe invocar al constructor de una superclase?
¿Dónde debe invocarse al constructor de una superclase? En la última línea del constructor de la subclase.
¿Cómo declarar una superclase?
Para especificar explícitamente la superclase de una clase, se debe poner la palabra clave extends más el nombre de la superclase entre el nombre de la clase que se ha creado y la llave abierta que abre el cuerpo de la clase, así.
¿Cómo heredar 2 clases en Java?
¿Java Herencia Multiple?, Esta es una pregunta muy muy habitual en programación orientada a objeto, ¿Soporta Java Herencia Multiple?, La respuesta de cualquier desarrollador con experiencia es que no. Java no soporta la herencia multiple ya que una clase concreta solo puede tener una clase padre. De esta clase podemos heredar la clase de Deportista que añadirá el método correr y si nos apetece sobreescribirá el método andar para que el deportista ande más rápido hasta aquí todo es muy muy clásico. Vamos a verlo en código: package com.arquitecturajava; public class Persona public void setNombre(String nombre) public int getEdad() public void setEdad(int edad) public void andar() } package com.arquitecturajava; public class Deportista extends Persona }
¿Qué tipos de herencia soporta Java?
III – Herencia La herencia es un mecanismo que permite la definicin de una clase a partir de la definicin de otra ya existente. La herencia permite compartir automticamente mtodos y datos entre clases, subclases y objetos. La herencia est fuertemente ligada a la reutilizacin del cdigo en la OOP.
Esto es, el cdigo de cualquiera de las clases puede ser utilizado sin ms que crear una clase derivada de ella, o bien una subclase, Hay dos tipos de herencia: Herencia Simple y Herencia Múltiple, La primera indica que se pueden definir nuevas clases solamente a partir de una clase inicial mientras que la segunda indica que se pueden definir nuevas clases a partir de dos o más clases iniciales.
Java sólo permite herencia simple, Superclase y Subclases El concepto de herencia conduce a una estructura jerrquica de clases o estructura de rbol, lo cual significa que en la OOP todas las relaciones entre clases deben ajustarse a dicha estructura.
* Una superclase puede tener cualquier nmero de subclases. * Una subclase puede tener slo una superclase.
: III – Herencia
¿Qué es un árbol en Java?
Árboles en Java La estructura de datos árbol al contrario que las listas es una estructura de datos no lineal. Las listas tienen un orden impuesto en sus elementos teniendo como mucho un predecesor y un sucesor. Los árboles pueden tener dos o más sucesores. Un árbol consiste en un conjunto de nodos o vértices y un conjunto de aristas o arcos que satisface unos requisitos:
Existe una jerarquía de nodos, de forma que a cada nodo hijo le llega una arista de otro nodo padre, De esta forma se establece la relación padre-hijo: p es padre de h, h es un hijo de p. El nodo donde comienza la jerarquía se llama nodo raíz, A este nodo no llegan arcos de ningún otro nodo, en otras palabras, no es hijo de ningún nodo padre. Existe un camino único entre la raíz y cualquiera de los nodos del árbol
Veremos ahora un poco de terminología relacionada con los árboles. En primer lugar estudiaremos qué tipos de nodos nos podremos encontrar en un árbol. Hemos visto que existe un nodo especial, el nodo raiz que no tiene padres. El caso de los nodos que no tienen hijos es el de los nodos externos o nodos hoja,
- El resto de nodos son internos, cuando tiene descendientes,
- Diremos que un nodo es descendiente de otro, si es hijo de él ó descendiente de sus hijos.
- Los descendientes nos determinan un subárbol con raíz el nodo descendiente.
- Veremos ahora aquellos conceptos que nos dan una idea sobre la topología del árbol.
Son los conceptos de camino, longitud y profundidad :
El camino existente entre dos nodos, es la secuencia de “arcos” que nos llevan, siguiéndolas de forma consecutiva del primero al segundo. La longitud es el número de aristas que contiene. Profundidad de un nodo es la longitud del camino de la raíz a ese nodo. Altura de un árbol es la profundidad máxima entre todos los nodos extremos del árbol. Es decir, “la profundidad del nodo más profundo”.
Por simplificar el estudio de los árboles veremos el caso de los árboles binarios, Un árbol binario es un árbol en el que cada nodo tiene 0 ó 2 hijos (el hijo izquierdo y el derecho). Este árbol podrá ser ordenado si para cada nodo existe un orden lineal para todos su hijos, es decir, si tenemos el orden “menor que”, un árbol será ordenado si para cada nodo sus hijos son menores que el padre. Cada uno de los objetos de tipo NodoBinario representa una estructura de datos compuesta por el elemento que se almacena en cada nodo y dos nodos que llamaremos nodoizqy nododcha. Puesto que los nodos binario pueden tener 0 ó 2 hijos, se han definido dos tipos de constructores para cubrir los dos casos.
Notesé que un ArbolBinario como máximo puede tener un hijo, si es el caso usaremos el constructor con un solo parámetro si no es así utilizaremos el constructor por defecto, es decir, el constructor sin parámetros.Un ArbolBinario no es mas que un NodoBinario llamado raiz. Vemos en el siguiente esquema cómo sería gráficamente la estructura del árbol:Vamos a ver cómo se calcularía el tamaño del árbol a partir de esta definición:
Definimos una función auxiliar que calcula el tamaño de un subárbol bajo un nodo. Este método calcula una longitud 0 si el Nodo es nulo. En otro caso, la longitud será la suma de los tamaños de los nodos hijos más uno, correspondiente al nodo actual. El método tamaño llama al método tam_aux con el nodo raiz.
¿Qué es el stack en Java?
Computación I Un objeto de la clase Stack es una pila. Permite almacenar objetos y luego recuperarlos en el orden inverso en el cual se insertaron, es decir, siempre se recupera el último elemento insertado. Para insertar un objeto a la pila se invoca el método push.
- En cualquier momento se puede recuperar el último elemento insertado en la pila con los métodos pop Tipo (). Por ejemplo:
println( pila.popString() ); Despliega el string “Hola” y elimina de la pila dicho elemento. El tipo pedido (en este caso String) debe coincidir con el tipo del valor del elemento insertado en la pila.
- Para obtener el valor del tope de la pila sin que éste sea eliminado, deben usarse los métodos first Tipo (). Por ejemplo:
println( pila.firstString() ); Despliega el string “Hola”, pero no lo elimina de la pila.
¿Qué es pop y push en Java?
Ahora veamos algunos conceptos básicos de cada uno de estos métodos y un ejemplo en código de cómo ponerlos en práctica. – Metodo Pop() : Este método elimina el último elemento de un arreglo mutando su estructura inicial y luego devuelve dicho elemento como respuesta.
let popularLanguages = ; popularLanguages.pop(); // Retornara Java Método Push() : Este método agrega los nuevos elementos que pasemos como parametros al final del arreglo y luego nos devuelve una nueva longitud de este arreglo. let typicalDish = ; // Retorna 4, el nuevo length del arreglo typicalDish.push(‘Vigoron’); Método Shift() : Elimina el primer elemento de un arreglo cambiando la longitud del mismo.
El valor de retorno que obtenemos del método shift es el elemento eliminado. let nicaSingers = ; nicaSingers.shift(); // Retornara el elemento eliminado Método Unshift() : El método agrega el nuevo elemento pasado como parámetro al comienzo del arreglo cambiando por tanto su longitud y luego devuelve la misma.
- Let myToddlerFavoriteShows = ; // Retorna el nuevo length del arreglo myToddlerFavoriteShows.unshift(‘Blaze & The Monster Machines’); Viste? ya aprendiste básicamente lo que serian nuestros primeros pasos para manipular e incluso mutar la estructura de un arreglo con estos métodos.
- Próximamente estaremos hablando de otros métodos y sobretodo de algunos helpers que tenemos para trabajar con los arreglos a nuestro gusto y antojo, para conseguir solo la data necesaria de ellos, así que estén atentos que muy pronto llegara este articulo! Psst! Me encantaría si pudieses dejar comentarios o correcciones a este tema para que juntos aprendamos mas y ayudemos a otros que estén comenzando en este mundo de JavaScript, así que ya sabes, quedamos a espera de tus aportes! Thanks for reading this article, I hope you enjoyed it as much as I did writing it.
Until next time, dear readers! ? Your enjoyment of this article encourages me to write further. ? Kindly share your valuable opinion by leaving a comment. ? If this article has truly helped you, please share it.
¿Qué es el This en Java?
Java, utiliza la referencia this al objeto para acceder a una variable de instancia oculta para el método que es llamado.
¿Cuándo se usa el This en Java?
Resumen –
- La palabra clave ‘THIS’ en Java es una variable de referencia que hace referencia al objeto actual.
- Se puede usar para referir la variable de instancia de la clase actual
- Se puede usar para invocar o iniciar el constructor de clase actual
- Se puede pasar como un argumento en la llamada al método
- Se puede pasar como argumento en la llamada de constructor
- Se puede usar para devolver la instancia de clase actual
- “this” es una referencia al objeto actual, cuyo método está siendo invocado.
- Puede usar la palabra clave “this” para evitar conflictos de nombres en el método / constructor de su instancia / objeto.
: ESTA palabra clave en Java con un ejemplo
¿Cuándo usar el This Java?
¿Para que sirve el metodo this en Java? this no es un metodo es una palabra reservada, mas específicamente this es un puntero hacia la instancia del objeto. Para entender este concepto de forma mas sencilla podemos ver a esta clase como la plantilla: class Coche,
} Y a un objeto del tipo Coche como un objeto creado en base a la anterior plantilla, el cual tiene guardado cierta información: Coche coche = new Coche(.parametrosParaConstruir); Al momento de crear este objeto se crea un puntero hacia ese objeto general, pero al momento de programar la clase posiblemente sea necesario usar los datos asignados en el constructor de la clase: public Coche(String marca, String modelo, int kilometros, int ano, double precio) Si estuviesemos en el lenguaje de programación javascript debo decirte que this es completamente necesario para referirse a metodos o atributos de una clase.
Sin embargo en java, esto es algo distinto, es decir, this es opcional en ciertos casos, pero en tu caso en particular usar this SI es necesario y es necesario debido a que como los parametros pasados al constructor se llaman igual que los miembros de tu clase, entonces para hacer referencia a los miembros de clase y no a los parametros del constructor deberas usar this, por eso en tu constructor se usa this : public class Coche,
} Sin embargo si tus parámetros no tuviesen el mismo nombre que los atributos de tu clase entonces puedes hacer la misma asignación de esta manera y es completamente valido en java : public class Coche, } Otro punto importante y a tener en cuenta es el siguiente: this NO hace referencia a la clase del objeto, si no a su instancia, es decir, esto de aquí: Coche coche = new Coche(.parametrosParaConstruir); coche.correr(); No es lo mismo que: Coche.correr(); Nótese que en el primer ejemplo coche.correr() esta escrito en minúscula mientras que el segundo esta escrito en mayuscula Coche.correr(), pese a ser parecidos no son lo mismo, puesto que el primer ejemplo figura la referencia a un metodo no estatico llamado correr que hace parte de cualquier instancia de la clase Coche, mientras que el segundo figura la referencia a un método estático llamado correr que NO hace parte de ninguna instancia de la clase Coche y ademas hace parte de la clase en si ( Coche.correr ) y no de coche.correr,
Por lo cual this hace siempre referencia al objeto creado y no a la clase. De hecho para poner las cosas aun mas simples podríamos decir que el rango de operación de this es entre los corchetes de la clase: class Coche, //El final opera this } Donde aquello delimitado por llaves en javascript se conoce como scope, en java este concepto es algo distinto., en java estando en una clase el scope funciona un poco distinto.
siendo que cualquier cosa que este dentro de las llaves principales de la clase tenga el mismo scope, Entonces podemos usar this para referenciar a los metodos o atributos de la instancia de un objeto. Sin embargo seria un poco erroneo decir que el rango de operación de this es todo lo que esta delimitado entre las llaves principales de la clase Coche en tu caso, puesto que en los metodos estaticos this NO puede usarse, haciendo que el rango de operacion de this enrealidad no sea toda la clase si no todos los atributos o métodos de la clase que no sean estáticos, por ejemplo: class Coche public void correr(),
} Mientras que: class Coche public static void correr(), } Espero haber podido aclarar un poco sobre que es this, yo no uso normalmente java pero this es un concepto relativamente general en muchos lenguajes de programación. : ¿Para que sirve el metodo this en Java?
¿Qué es el operador this?
Tema 23 El Puntero this | |||||||||
Teoría: Utilidad del Puntero this | |||||||||
El puntero this es una variable predefinida para todas las funciones u operadores miembro de una clase. Este puntero contiene la dirección del objeto concreto de la clase al que se está aplicando la función o el operador miembro. Se puede decir que *this es un alias del objeto correspondiente. Conviene tener en cuenta que cuando una función miembro se aplica a un objeto de su clase (su argumento implícito), accede directamente a las variables miembro (sin utilizar el operador punto o flecha), pero no tiene forma de referirse al objeto como tal, pues no le ha sido pasado explícitamente como argumento. Este problema se resuelve con el puntero this. Considérese el siguiente ejemplo: | |||||||||
Class C_Cuenta //, }; | |||||||||
En el caso de operadores miembro sobrecargados, el puntero this es la forma que se utiliza para referirse al objeto al que se está aplicando el operador como primer operando. Hay que señalar que las funciones friend que no son miembros de ninguna clase no disponen de puntero this. Así al definir las funciones miembro de una clase, a veces es necesario referise al objeto invocador. El apuntador this es un apuntador predefinido que apunta al objeto invocador. Por ejemplo, consideremos una clase como la siguiente: | |||||||||
class Muestra ; | |||||||||
Las siguientes dos formas de definir la función miembro mostrar_cosas son equivalentes: | |||||||||
void Muestra::mostrar_cosas() // No es un estilo recomendable void Muestra::mostrar_cosas() | |||||||||
Cabe señalar que this no es el nombre de un objeto invocador. No podemos alterar el valor de dicho apuntador; siempre apunta al objeto invocador. | |||||||||