Herramientas de usuario

Herramientas del sitio


bloque2:metodosstatic

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
bloque2:metodosstatic [19/11/2018 16:53] – [Métodos estáticos] Fernando Valdeónbloque2:metodosstatic [16/09/2024 20:53] (actual) – editor externo 127.0.0.1
Línea 5: Línea 5:
   * Métodos estáticos: se definen como ''static''   * Métodos estáticos: se definen como ''static''
   * Métodos de instancia   * Métodos de instancia
 +
 +En este tema nos centramos en los __métodos estáticos__.
  
 Algunos de los métodos estáticos que hemos usado hasta ahora: Algunos de los métodos estáticos que hemos usado hasta ahora:
Línea 13: Línea 15:
 </code> </code>
  
-Otros método que también hemos usado pero no son estáticos:+También hemos usado métodos no estáticos (de instancia) a partir de algunos objetos:
 <code java> <code java>
 +//Es necesario construir un objeto
 String cadena = "Fernando"; String cadena = "Fernando";
 Scanner input = new Scanner(System.in); Scanner input = new Scanner(System.in);
  
-//Se ejecutan desde un objeto de la clase+//se llama a sus métodos a partir del objeto creado
 cadena.charAt(4); cadena.charAt(4);
 input.nextLine(); input.nextLine();
Línea 39: Línea 42:
   * **Modificadores**: public, private, static   * **Modificadores**: public, private, static
   * **Tipo retorno**: Tipo de datos que devuelve el método. Puede devolver un tipo concreto, o no devolver nada: ''void''   * **Tipo retorno**: Tipo de datos que devuelve el método. Puede devolver un tipo concreto, o no devolver nada: ''void''
-  * **Identificador**: El identificador que usaremos para ejecutarlo, igual que el de una variable. Se usa ''lowerCamenCase''+  * **Identificador**: El identificador que usaremos para ejecutarlo, igual que el de una variable. Su forma de escribir el identificador de un método es ''lowerCamelCase''
   * **Lista de parámetros**: Los tipos de datos que necesita el método para operar.   * **Lista de parámetros**: Los tipos de datos que necesita el método para operar.
-  * **Return**: se usa para indicar el valor que devuelve el método. El tipo retornado tiene que coincidir con el tipo retorno del método.+  * **Return**: se usa para devolver el valor de retorno. El tipo retornado tiene que coincidir con el ''tipo retorno'' del método.
  
 <code java> <code java>
Línea 54: Línea 57:
 Definimos como ''void'' los métodos que no devuelven un valor. Harán cosas pero no devuelven un valor. Normalmente muestran datos por pantalla. Definimos como ''void'' los métodos que no devuelven un valor. Harán cosas pero no devuelven un valor. Normalmente muestran datos por pantalla.
  
-''void'' es una palabra reservada usada cuando no hay valor de retorno. No se pueden crear variables ''void''.+''void'' es una palabra reservada que se usa solo para indicar que un método no retorna nada. No se pueden crear variables de tipo ''void''.
  
 <code java> <code java>
Línea 67: Línea 70:
  
 ==== Modificador static ==== ==== Modificador static ====
-Por ahora, la principal característica que nos interesa de la cláusula ''static'' esque para usarlo no necesitamos crear un objeto de la clase en la que se encuentra definido.+Por ahora, la principal característica que nos interesa de la cláusula ''static'' es que para usar un método static  no necesitamos crear un objeto de la clase en la que se encuentra definido.
  
 Por ejemplo: todos los métodos de la ''clase Math'', son estáticos, y no necesitamos crear una variable de tipo Math para ejecutarlos. Por ejemplo: todos los métodos de la ''clase Math'', son estáticos, y no necesitamos crear una variable de tipo Math para ejecutarlos.
Línea 77: Línea 80:
  
 <code java> <code java>
-package sumar;+package metodos;
  
-public class Ejercicio1 +public class Metodo1
    public static void main(String[] args) {     public static void main(String[] args) { 
-      int num1=3, num2=5;  +      int num1 = 3, num2 = 5;  
-      System.out.println("La suma es: " + +      System.out.println("La suma es: " + sumar(num1, num2)); 
-      sumar(num1, num2)); +
        
  
Línea 98: Línea 100:
 <code java> <code java>
 package ejercicios; package ejercicios;
 +
 +//Debo importar la clase que lo contiene
 +import metodos.Metodo1;
  
 public class Ejercicio1 {  public class Ejercicio1 { 
Línea 103: Línea 108:
       int num1 = 3;       int num1 = 3;
       int num2 = 5;        int num2 = 5; 
-      System.out.println("La suma es: " + sumar(num1, num2)); +      //Lo uso poniendo delante el nombre de la clase 
 +      System.out.println("La suma es: " + Metodo1.sumar(num1, num2)); 
        
 } }
Línea 115: Línea 121:
   * Diferencia en el tipo de parámetros que reciben.   * Diferencia en el tipo de parámetros que reciben.
  
-Un ejemplo de clase con sobrecarga de métodos son las clases Matho String:+Ejemplos de clases con sobrecarga de métodos son las clases Math o String:
 {{ :bloque2:sobrecargamath.png?400 |}} {{ :bloque2:sobrecargamath.png?400 |}}
 {{ :bloque2:sobrecargastring.png?400 |}} {{ :bloque2:sobrecargastring.png?400 |}}
  
 Como vemos hay varios métodos repetidos, pero tienen alguna diferencia entre el __tipo del parámetro__ o __la cantidad de parámetros__ que reciben. Como vemos hay varios métodos repetidos, pero tienen alguna diferencia entre el __tipo del parámetro__ o __la cantidad de parámetros__ que reciben.
 +
 +----
 +
 +{{ vimeo>306490019?medium }}
 +
 +----
 ===== Recursividad ===== ===== Recursividad =====
-Se conoce con el nombre de recursividad a un método en el que se hace una llamada a sí mismo. Es una técnica muy potente, pero también muy pesada.+Se conoce con el nombre de recursividad a la técnica en la que un método hace una llamada a sí mismo. Es una técnica muy potente, pero también muy pesada (consumo de recursos). 
 + 
 +Ejemplo de método recursivo para obtener el valor factorial (1 x 2 x 3 x ... x N) de un entero positivo (N):
  
-Método para obtener el valor factorial de un entero positivo 
 <code java> <code java>
 static int factorial(int entero){  static int factorial(int entero){ 
-   int fact = 1; + 
 +   //Condición de salida de recursividad
    if (entero == 0){    if (entero == 0){
-      fact = 1;  +      return 1;  
-   }else{  +       
-      for(int i = n; i >= 1; i--){ +    
-      //Multiplicamos  a  n  por  cada  numero, decrementado en 1  +   //LLamada recursiva 
-         fact = fact * i; +   return factorial(entero - 1) * entero
-      }  +
-   return fact+
 } }
 </code> </code>
bloque2/metodosstatic.1542646437.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)