La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Clases y Objetos. Operadores Aritméticos: Los habituales  Suma +.  Resta -.  Multiplicación *.  División /.  Resto de la División %.

Presentaciones similares


Presentación del tema: "Clases y Objetos. Operadores Aritméticos: Los habituales  Suma +.  Resta -.  Multiplicación *.  División /.  Resto de la División %."— Transcripción de la presentación:

1 Clases y Objetos

2 Operadores Aritméticos: Los habituales  Suma +.  Resta -.  Multiplicación *.  División /.  Resto de la División %.

3 Operadores de Asignación:  El principal es '=' pero hay más operadores de asignación con distintas funciones:  '+=' : op1+= op2equivale a op1 = op1 + op2  '-=' : op1-= op2 equivale a op1 = op1 - op2  '*=' : op1*= op2 equivale a op1 = op1 * op2  '/=' : op1 /= op2 equivale a op1 = op1 / op2  '%=' : op1 %= op2equivale a op1 = op1 % op2

4  Operadores Unarios: El mas (+) y el menos (-). Para cambiar el signo del operando.  Operador Instanceof: Nos permite saber si un objeto pertenece a una clase o no. NombreObjeto instanceof NombreClase

5  Operadores Incrementales: Son los operadores que nos permiten incrementar las variables en una unidad. Se pueden usar delante y detrás de la variable dependiendo de lo que queramos, es decir, si queremos que incremente o viceversa antes de utilizar o lo contrario. '++' '--'

6  Operadores Relacionales: Permiten comparar variables según relación de igualdad/desigualdad o relacción mayor/menor. Devuelven siempre un valor boolean. '>': Mayor que '<': Menor que '==': Iguales '¡=': Distintos '>=': Mayor o igual que '<=': Menor o igual que

7  Operadores Lógicos: Nos permiten construir expresiones lógicas. '&&' : devuelve true si ambos operandos son true. '||' : devuelve true si alguno de los operandos son true. '!' : Niega el operando que se le pasa. '&' : devuelve true si ambos operandos son true, evaluándolos ambos. '|' : devuelve true uno de los operandos es true, evaluándolos ambos.

8  Operador de concatenación con cadena de caracteres '+': Por Ejemplo: System.out.println("El total es"+ result +"unidades");  Operadores que actúan a nivel de bits: '>>': desplazamiento a la derecha de los bits del operando '<<': desplazamiento a la izquierda de los bits de operando '&': operador and a nivel de bit. '|': operador or a nivel de bit

9 Separadores  Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código Java; son los separadores simples, que van a definir la forma y función del código. Los separadores admitidos en Java son:  () - paréntesis. Para contener listas de parámetros en la definición y llamada a métodos. También se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo.

10 Separadores  {} - llaves. Para contener los valores de matrices inicializadas automáticamente. También se utiliza para definir un bloque de código, para clases, métodos y ámbitos locales.  [ ] - corchetes. Para declarar tipos matriz. También se utiliza cuando se referencian valores de matriz.

11 Separadores  ; punto y coma. Separa sentencias. , coma. Separa identificadores consecutivos en una declaración de variables. También se utiliza para encadenar sentencias dentro de una sentencia for. . punto. Para separar nombres de paquete de subpaquetes y clases. También se utiliza para separar una variable o método de una variable de referencia.

12  En Java, como en cualquier otro lenguaje orientado a objetos, abandonamos el modo de entender un programa que utilizábamos anteriormente para aproximarnos a un modo más cercano a "la vida misma". Los programas ahora estarán divididos en clases. Una clase en si se puede entender como un programa independiente, tiene sus propios datos y también maneja esos datos "a su modo".

13  La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases tal y como las hemos explicado anteriormente son "la clase mecánico" y la "clase panadero". Cada una de estas clases tiene sus propias herramientas y sus propias tareas, por ejemplo, el panadero tiene "harina" y una de sus tareas es "amasar", mientras que el mecánico tiene "bujías" y una de sus tareas es "limpiar bujías". Lo importante de todo esto es que cada uno hace muy bien su tarea pero no tiene sentido "llevar el coche a la panadería de la esquina" ni "pedir una baguette junto con un cambio de aceite".

14  El elemento básico de la programación orientada a objetos en Java es la clase. Una clase define la forma y comportamiento de un objeto.  Para crear una clase sólo se necesita un archivo fuente que contenga la palabra clave reservada class seguida de un identificador legal y un bloque delimitado por dos llaves para el cuerpo de la clase. class MiPunto { }

15  Un archivo de Java debe tener el mismo nombre que la clase que contiene, y se les suele asignar la extensión ".java". Por ejemplo la clase MiPunto se guardaría en un fichero que se llamase MiPunto.java. Hay que tener presente que en Java se diferencia entre mayúsculas y minúsculas; el nombre de la clase y el de archivo fuente han de ser exactamente iguales.

16  Aunque la clase MiPunto es sintácticamente correcta, es lo que se viene a llamar una clase vacía, es decir, una clase que no hace nada. Las clases típicas de Java incluirán variables y métodos de instancia. Los programas en Java completos constarán por lo general de varias clases de Java en distintos archivos fuente.

17  Una clase es una plantilla para un objeto. Por eso define la estructura de un objeto y su interfaz funcional, en forma de métodos. Cuando se ejecuta un programa en Java, el sistema utiliza definiciones de clase para crear instancias de las clases, que son los objetos reales. La forma general de una definición de clase es: class Nombre_De_Clase { tipo_de_variable nombre_de_atributo1; tipo_de_variable nombre_de_atributo2; //...

18 tipo_devuelto nombre_de_método1( lista_de_parámetros ) {cuerpo_del_método1;} tipo_devuelto nombre_de_método2( lista_de_parámetros ) {cuerpo_del_método2;} //... }

19  Los tipos tipo_de_variable y tipo_devuelto, han de ser tipos simples Java o nombres de otras clases ya definidas. Tanto Nombre_De_Clase, como los nombre_de_atributo y nombre_de_método, han de ser identificadores Java válidos.

20  Los atributos  Los datos se encapsulan dentro de una clase declarando variables dentro de las llaves de apertura y cierre de la declaración de la clase, variables que se conocen como atributos. Se declaran igual que las variables locales de un método en concreto.  Por ejemplo, este es un programa que declara una clase MiPunto, con dos atributos enteros llamados x e y.

21  class MiPunto { int x, y; }  Los atributos se pueden declarar con dos clases de tipos: un tipo simple Java, o el nombre de una clase (será una referencia a objeto).  Cuando se realiza una instancia de una clase (creación de un objeto) se reservará en la memoria un espacio para un conjunto de datos como el que definen los atributos de una clase. A este conjunto de variables se le denomina variables de instancia.

22  Los métodos  Los métodos son subrutinas que definen la interfaz de una clase, sus capacidades y comportamiento.  Un método ha de tener por nombre cualquier identificador legal distinto de los ya utilizados por los nombres de la clase en que está definido. Los métodos se declaran al mismo nivel que las variables de instancia dentro de una definición de clase.

23  En la declaración de los métodos se define el tipo de valor que devuelven y a una lista formal de parámetros de entrada, de sintaxis tipo identificador separadas por comas. La forma general de una declaración de método es: tipo_devuelto nombre_de_método( lista- formal-de-parámetros ) { cuerpo_del_método; }

24  Por ejemplo el siguiente método devuelve la suma de dos enteros: int metodoSuma( int paramX, int paramY ) { return ( paramX + paramY ); }  En el caso de que no se desee devolver ningún valor se deberá indicar la palabra reservada void. Así mismo, si no se desean parámetros, la declaración del método debería incluir un par de paréntesis vacíos (): void metodoVacio( ) { };

25  Los métodos son llamados indicando una instancia individual de la clase, que tendrá su propio conjunto único de variables de instancia, por lo que los métodos se pueden referir directamente a ellas.

26  El método inicia() para establecer valores a las dos variables de instancia sería el siguiente: void inicia( int paramX, int paramY ) { x = paramX; y = paramY; }

27  En si, las clases marcan la estructura básica de un programa tanto en Java como en la programación orientada a objetos en general.  Una clase es el producto de enfocar la programación a los datos más que a las funciones. Por tanto es una colección de datos y además para operar con ellos una serie de funciones propias de la clase.

28  La palabra public es opcional: si no se pone, la clase sólo es visible para las demás clases del package. Todos los métodos y variables deben ser definidos dentro del bloque {...} de la clase.  Un objeto (en inglés, instance) es un ejemplar concreto de una clase. Las clases son como tipos de variables, mientras que los objetos son como variables concretas de un tipo determinado. Classname unObjeto; Classname otroObjeto;

29  Variables y Métodos de Instancia  Una clase en Java puede contener variables y métodos. Las variables pueden ser tipos primitivos como int, char, etc. Los métodos son funciones.

30  Por ejemplo, en el siguiente trozo de código podemos observarlo: public MiClase { int i; public MiClase() { i = 10; } public void Suma_a_i( int j ) { i = i + j; }

31  La clase MiClase contiene una variable (i) y dos métodos, MiClase que es el constructor de la clase Suma_a_i( int j ).

32 Características importantes de las clases: 1. Todas las variables y funciones de Java deben pertenecer a una clase. No hay variables y funciones globales. 2. Si una clase deriva de otra (extends), hereda todas sus variables y métodos. 3. Java tiene una jerarquía de clases estándar de la que pueden derivar las clases que crean los usuarios.

33 4. Una clase sólo puede heredar de una única clase (en Java no hay herencia múltiple). Si al definir una clase no se especifica de qué clase deriva, por defecto la clase deriva de Object. La clase Object es la base de toda la jerarquía de clases de Java.

34  5. En un archivo se pueden definir varias clases, pero en un archivo no puede haber más que una clase public. Este archivo se debe llamar como la clase public que contiene con extensión *.java. Con algunas excepciones, lo habitual es escribir una sola clase por archivo.  6. Si una clase contenida en un archivo no es public, no es necesario que el archivo se llame como la clase.

35 7. Los métodos de una clase pueden referirse de modo global al objeto de esa clase al que se aplican por medio de la referencia this. 8. Las clases se pueden agrupar en packages, introduciendo una línea al comienzo del fichero (package packageName;). Esta agrupación en packages está relacionada con la jerarquía de directorios y archivos en la que se guardan las clases.

36  Referencias a Objeto e Instancias  Los tipos simples de Java describían el tamaño y los valores de las variables. Cada vez que se crea una clase se añade otro tipo de dato que se puede utilizar igual que uno de los tipos simples. Por ello al declarar una nueva variable, se puede utilizar un nombre de clase como tipo. A estas variables se las conoce como referencias a objeto.

37  Todas las referencias a objeto son compatibles también con las instancias de subclases de su tipo. Del mismo modo que es correcto asignar un byte a una variable declarada como int, se puede declarar que una variable es del tipo MiClase y guardar una referencia a una instancia de este tipo de clase:  MiPunto p;

38  Esta es una declaración de una variable p que es una referencia a un objeto de la clase MiPunto, de momento con un valor por defecto de null. La referencia null es una referencia a un objeto de la clase Object, y se podrá convertir a una referencia a cualquier otro objeto porque todos los objetos son hijos de la clase Object.

39  Constructores  Las clases pueden implementar un método especial llamado constructor. Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables explícitamente para su iniciación.

40  El constructor tiene exactamente el mismo nombre de la clase que lo implementa; no puede haber ningún otro método que comparta su nombre con el de su clase. Una vez definido, se llamará automáticamente al constructor al crear un objeto de esa clase (al utilizar el operador new).

41  El constructor no devuelve ningún tipo, ni siquiera void. Su misión es iniciar todo estado interno de un objeto (sus atributos), haciendo que el objeto sea utilizable inmediatamente; reservando memoria para sus atributos, iniciando sus valores...  Por ejemplo:  MiPunto( ) { inicia( -1, -1 ); }

42  Este constructor denominado constructor por defecto, por no tener parámetros, establece el valor -1 a las variables de instancia x e y de los objetos que construya.  El compilador, por defecto,llamará al constructor de la superclase Object() si no se especifican parámetros en el constructor.

43  Este otro constructor, sin embargo, recibe dos parámetros:  MiPunto( int paraX, int paraY )  { inicia( paramX, paramY ); }  La lista de parámetros especificada después del nombre de una clase en una sentencia new se utiliza para pasar parámetros al constructor.

44  Se llama al método constructor justo después de crear la instancia y antes de que new devuelva el control al punto de la llamada.  Así, cuando ejecutamos el siguiente programa:  MiPunto p1 = new MiPunto(10, 20);  System.out.println( "p1.- x = " + p1.x + " y = " + p1.y );  Se muestra en la pantalla:  p1.- x = 10 y = 20

45  Para crear un programa Java que contenga ese código, se debe de crear una clase que contenga un método main(). El intérprete java ejecutará el método main de la clase que se le indique como parámetro.  El operador new  El operador new crea una instancia de una clase (objetos) y devuelve una referencia a ese objeto.

46  Por ejemplo:  MiPunto p2 = new MiPunto(2,3);  Este es un ejemplo de la creación de una instancia de MiPunto, que es controlador por la referencia a objeto p2.

47  Hay una distinción crítica entre la forma de manipular los tipos simples y las clases en Java: Las referencias a objetos realmente no contienen a los objetos a los que referencian. De esta forma se pueden crear múltiples referencias al mismo objeto.

48  Ejemplo:  MiPunto p3 =p2;  Aunque tan sólo se creó un objeto MiPunto, hay dos variables (p2 y p3) que lo referencian. Cualquier cambio realizado en el objeto referenciado por p2 afectará al objeto referenciado por p3. La asignación de p2 a p3 no reserva memoria ni modifica el objeto.  Si no hay referencia al objeto se quita de memoria

49  Cuando se realiza una instancia de una clase (mediante new) se reserva en la memoria un espacio para un conjunto de datos como el que definen los atributos de la clase que se indica en la instanciación. A este conjunto de variables se le denomina variables de instancia.

50  La potencia de las variables de instancia es que se obtiene un conjunto distinto de ellas cada vez que se crea un objeto nuevo. Es importante el comprender que cada objeto tiene su propia copia de las variables de instancia de su clase, por lo que los cambios sobre las variables de instancia de un objeto no tienen efecto sobre las variables de instancia de otro.

51  El siguiente programa crea dos objetos MiPunto y establece los valores de x e y de cada uno de ellos de manera independiente para mostrar que están realmente separados.  MiPunto p4 = new MiPunto( 10, 20 );  MiPunto p5 = new MiPunto( 42, 99 );

52  System.out.println("p4.- x = " + p4.x + " y = " + p4.y);  System.out.println("p5.- x = " + p5.x + " y = " + p5.y);  Este es el aspecto de salida cuando lo ejecutamos.  p4.- x = 10 y = 20  p5.- x = 42 y = 99

53  El operador punto (.)  El operador punto (.) se utiliza para acceder a las variables de instancia y los métodos contenidos en un objeto, mediante su referencia a objeto:  referencia_a_objeto.nombre_de_variable_de_ instancia  referencia_a_objeto.nombre_de_método( lista-de-parámetros );

54  Este ejemplo combina los operadores new y punto para crear un objeto MiPunto, almacenar algunos valores en él e imprimir sus valores finales: MiPunto p6 = new MiPunto( 10, 20 ); System.out.println ("p6.- 1. X=" + p6.x + ", Y=" + p6.y); p6.inicia( 30, 40 ); System.out.println ("p6.- 2. X=" + p6.x + ", Y=" + p6.y);  Cuando se ejecuta este programa, se observa la siguiente salida: p6.- 1. X=10, Y=20 p6.- 2. X=30, Y=40

55  Durante las impresiones (método println()) se accede al valor de las variables mediante p6.x y p6.y, y entre una impresión y otra se llama al método inicia(), cambiando los valores de las variables de instancia.  Cuando se llama al método p6.inicia(), lo primero que se hace en el método es sustituir los nombres de los atributos de la clase por las correspondientes variables de instancia del objeto con que se ha llamado. Así por ejemplo x se convertirá en p6.x.  Si otros objetos llaman a inicia(), incluso si lo hacen de una manera concurrente, no se producen efectos laterales, ya que las variables de instancia sobre las que trabajan son distintas.

56  La referencia this  Java incluye un valor de referencia especial llamado this, que se utiliza dentro de cualquier método para referirse al objeto actual. El valor this se refiere al objeto sobre el que ha sido llamado el método actual. Se puede utilizar this siempre que se requiera una referencia a un objeto del tipo de una clase actual. Si hay dos objetos que utilicen el mismo código, seleccionados a través de otras instancias, cada uno tiene su propio valor único de this.

57  Un refinamiento habitual es que un constructor llame a otro para construir la instancia correctamente. El siguiente constructor llama al constructor parametrizado MiPunto(x,y) para terminar de iniciar la instancia: MiPunto() { this( -1, -1 ); // Llama al constructor parametrizado }

58  En Java se permite declarar variables locales, incluyendo parámetros formales de métodos, que se solapen con los nombres de las variables de instancia.  No se utilizan x e y como nombres de parámetro para el método inicia, porque ocultarían las variables de instancia x e y reales del ámbito del método.

59  Si lo hubiésemos hecho, entonces x se hubiera referido al parámetro formal, ocultando la variable de instancia x: void inicia2( int x, int y ) { x = x; // Ojo, no modificamos la variable de instancia!!! this.y = y; // Modificamos la variable de instancia!!! }

60  Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase.  Cuando se declara una clase en Java, se pueden declarar uno o más constructores opcionales que realizan la inicialización cuando se instancia (se crea una ocurrencia) un objeto de dicha clase.

61  Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de MiClase, se crean (instancian) todos los métodos y variables, y se llama al constructor de la clase: MiClase mc; mc = new MiClase();  La palabra clave new se usa para crear una instancia de la clase. Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo.

62  Variables y Métodos de Instancia  Una clase en Java puede contener variables y métodos. Las variables pueden ser tipos primitivos como int, char, etc. Los métodos son funciones.

63  Por ejemplo, en el siguiente trozo de código podemos observarlo: public MiClase { int i; public MiClase() { i = 10; } public void Suma_a_i( int j ) { i = i + j; }

64  La clase MiClase contiene una variable (i) y dos métodos, MiClase que es el constructor de la clase Suma_a_i( int j ).

65 Ámbito de una variable  Los bloques de sentencias compuestas en Java se delimitan con dos llaves. Las variables de Java sólo son válidas desde el punto donde están declaradas hasta el final de la sentencia compuesta que la engloba. Se pueden anidar estas sentencias compuestas, y cada una puede contener su propio conjunto de declaraciones de variables locales. Sin embargo, no se puede declarar una variable con el mismo nombre que una de ámbito exterior.

66  El siguiente ejemplo intenta declarar dos variables separadas con el mismo nombre. En C y C++ son distintas, porque están declaradas dentro de ámbitos diferentes. En Java, esto es ilegal. Class Ambito { int i = 1; // ámbito exterior { // crea un nuevo ámbito int i = 2; // error de compilación }

67  Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase.  Cuando se declara una clase en Java, se pueden declarar uno o más constructores opcionales que realizan la inicialización cuando se instancia (se crea una ocurrencia) un objeto de dicha clase.

68  Los constructores inicializan nuestra clase, le dan un estado inicial estable listo para su uso. Siempre que declarábamos una variable numérica entero (int) esta tomaba el valor cero como estado inicial estable listo para ser cambiado a nuestro gusto, los constructores hacen lo mismo pero para las clases.

69  En un auto el constructor sería el equivalente de encender el motor, en una computadora el constructor iniciaría windows, linux, solaris o cualquier otro sistema operativo instalado preparándolo para su uso, en una calculadora el constructor cumpliría la función de encender el display y activar las teclas para su uso, si tenemos en mente crear una clase para nuestro programa en lo primero que debemos pensar es en como definir su constructor.

70  "Constructor" es solo un nombre más elegante para referirnos a una función, el constructor en cierta forma también es una función pero es una muy especial porque no tiene tipo y no devuelve valores, solo es una sección de código que se ejecutará antes que las demás (muy parecida a la función init() de las applets).

71  Puesto que el constructor se ejecutará antes que ninguna otra parte es un área perfecta para inicializar muchas variables a la vez por eso le llaman constructor, yo también le llamaría función inicializadora de variables.

72  El constructor de una clase es un método estándar para inicializar los objetos de esa clase  Se invoca automáticamente cuando new crea un objeto de esa clase. Los constructores se declaran en el momento de definir la clase.  class A {  int x, y;  A() { x=0; y=0; } // el constructor ...  }   A a= new A();  a.Print(); // 0 0

73  El constructor puede tener parámetros. En este caso, se deben colocar los argumentos respectivos al crear el objeto: class A { int x, y; A(int ix, int iy) { x=ix; y=iy; } // el constructor … } A a= new A(1,2); a.Print(); // 1 2 a= new A(); // error, hay que colocar los argumentos a.A(1,2); // error, no se puede invocar el constructor

74  Se pueden colocar varios constructores. Durante la creación de un objeto, se invoca aquel que calza con los argumentos dados: class A { int x, y; A() { x=0; y= 0; } A(int ix, int iy) { x=ix; y=iy; } A(A from) { x= from.x; y= from.y; } …} A a1= new A(); a1.Print(); // 0 0 A a2= new A(1,2); a2.Print(); // 1 2 A a3= new A(a2); a3.Print(); // 1 2

75 class ejemplo { public static void main(String args[]) { A a1= new A(); //a1.Print(); // 0 0 System.out.println(a1.x); System.out.println(a1.y); A a2= new A(2,3); //a2.Print(); // 1 2 System.out.println(a2.x); System.out.println(a2.y); A a3= new A(a2); System.out.println(a3.x); System.out.println(a3.y); //a3.Print(); // 1 2 } class A { int x, y; A() { x=0; y= 0; } A(int ix, int iy) { x=ix; y=iy; } A(A from) { x= from.x; y= from.y; } }

76  Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de MiClase, se crean (instancian) todos los métodos y variables, y se llama al constructor de la clase: MiClase mc; mc = new MiClase();  La palabra clave new se usa para crear una instancia de la clase. Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo.

77  Después de ser instanciado un nuevo objeto mc, el valor de i en el objeto mc será igual a 10. Se puede referenciar la variable (de instancia) i con el nombre del objeto: mc.i++; // incrementa la instancia de i de mc  Al tener mc todas las variables y métodos de MiClase, se puede usar la primera sintaxis para llamar al método Suma_a_i() utilizando el nuevo nombre de clase mc: mc.Suma_a_i( 10 );  y ahora la variable mc.i vale 21.

78 Finalizadores  Java no utiliza destructores (al contrario que C++) ya que tiene una forma de recoger automáticamente todos los objetos que se salen del alcance. No obstante proporciona un método que, cuando se especifique en el código de la clase, el reciclador de memoria (garbage collector) llamará: // Cierra el canal cuando este objeto es reciclado protected void finalize() { close(); }

79 Alcance de Objetos y Reciclado de Memoria  Los objetos tienen un tiempo de vida y consumen recursos durante el mismo. Cuando un objeto no se va a utilizar más, debería liberar el espacio que ocupaba en la memoria de forma que las aplicaciones no la agoten (especialmente las grandes).  En Java, la recolección y liberación de memoria es responsabilidad de un thread llamado automatic garbage collector. Este thread monitoriza el alcance de los objetos y marca los objetos que se han salido de alcance.

80  Ejemplo: String s; // no se ha asignado todavía s = new String( "abc" ); // memoria asignada s = "def"; // se ha asignado nueva memoria (nuevo objeto)  La clase String crea un objeto String y lo rellena con los caracteres "abc" y crear otro (nuevo) String y colocarle los caracteres "def".  En esencia se crean dos objetos: Objeto String "abc" Objeto String "def"  Al final de la tercera sentencia, el primer objeto creado de nombre s que contiene "abc" se ha salido de alcance. No hay forma de acceder a él. Ahora se tiene un nuevo objeto llamado s y contiene "def". Es marcado y eliminado en la siguiente iteración del thread reciclador de memoria.

81  Aunque este tema suene algo raro que no te preocupe porque es muy simple. Se supone que ya vimos funciones o también conocidos en java como métodos, la sobrecarga de métodos es una característica del lenguaje que te permite crear varios métodos con el mismo nombre siempre y cuando estos métodos reciban una cantidad diferente de argumentos

82  para aclararlo mejor este es un ejemplo sencillo, es un razonamiento casi natural del sentido común que cada método deba recibir distintos argumentos para poder distinguirlo entre los demás:

83 import java.awt.*; import java.applet.*; public class ejemplosobrecarga extends Applet { int n; public int suma(int a, int b) { return a + b;} public int suma(int a, int b, int c) {return a+b+c;} public int suma(int a, int b, int c, int d) {return a+b+c+d;} public void paint(Graphics g) {  n = suma( 1, 2 ); g.drawString( "Suma :" + String.valueOf( n ), 20, 20 ); n = suma( 1, 2, 3 ); g.drawString( "Suma :" + String.valueOf( n ), 20, 40 ); n = suma( 1, 2, 3, 4); g.drawString( "Suma :" + String.valueOf( n ), 20, 60 );  } }

84  Esto es perfectamente válido en java, puedes crear tantas funciones con el mismo nombre como quieras procurando que reciban distintos argumentos para que igual se llame al apropiado dependiendo de tales argumentos de forma automática. Recuerda que la función paint se ejecuta automáticamente siempre que se inicia un applet así que puedes arrancar el programa desde la función init o la paint, como gustes.


Descargar ppt "Clases y Objetos. Operadores Aritméticos: Los habituales  Suma +.  Resta -.  Multiplicación *.  División /.  Resto de la División %."

Presentaciones similares


Anuncios Google