Modificadores de acceso y Sobrecarga de Métodos



Comments



Description

Modificadores de Acceso, Sobrecarga de métodos.Curso: Topicos I. Docente: Mendoza Corpus Carlos. CLASE 04 Modificadores de Acceso • • Los modificadores de acceso se utilizan para definir la visibilidad de los atributos y métodos de una clase y de la propia clase. En java existen cuatro modificadores de acceso: private, “friendly”, protected, public. • private: Cuando un atributo o método es definido como private, su uso esta restringido al interior de la clase, lo que significa que solamente puede ser utilizado en el interior de la misma clase. Este modificador puede ser aplicado a métodos y atributos, pero no clases. 2 Modificadores de Acceso   (ninguno): La no utilización de modificador de acceso proporciona al elemento lo que se conoce como el acceso por defecto (“friendly”). Si un elemento (clase, método o atributo) tiene acceso por defecto, únicamente las clases de su mismo paquete tendrán acceso al mismo. protected: Un método o atributo definido como protected en una clase puede ser utilizado por cualquier otra clase de su mismo paquete y además por cualquier subclase de ella, independientemente del paquete en que esta se encuentre. Una clase no puede ser protected, sólo sus miembros. 3 independientemente del paquete en que se encuentre. 4 . método o atributo) public será visible desde cualquier clase. Un elemento (clase.Modificadores de Acceso • public: El modificador public ofrece el máximo nivel de visibilidad . out.out. private char b.println("El float c: "+c). System. 5 .println("El entero a : "+a).println("El caracter b : "+b). System.Valores por Defecto de los Atributos public class Ejemplo{ private int a. private String e. private double d.out. void imprimir() { System. private float c. out. } public static void main(String args[]) { Ejemplo x= new Ejemplo(). x. System.imprimir(). } } 6 .println("El String e: "+e).out.Valores por Defecto de los Atributos System.println("El double d: "+d). llamada referencia this. su uso es redundante ya que los métodos y atributos propios pueden ser llamados directamente por su nombre sin necesidad de utilizar this.Referencia this • •   Cada objeto tiene acceso a una referencia a si mismo. La referencia this se utiliza en el interior de una clase y se usa explícitamente para referirse tanto a los atributos como a los métodos de un objeto. Sin embargo. 7 . Tan solo será necesario utilizar esta palabra reservada para invocar a un miembro del propio objeto cuando nos encontremos una variable local y un atributo con el mismo nombre. x = x. public Numero(int x) { this.x = x. } } 8 . } public void setX(int x) { this.Referencia this – Ejemplo1 public class Numero { private int x. } public String toString() { Return “x = “+this.x. 9 . a esto se le llama sobrecarga de métodos. no necesitamos asignarle un nombre diferente a cada uno. sino que podemos llamarlos igual a todos ellos. convertir un tipo básico en cadena). si tenemos varios que van a realizar la misma operación (por ejemplo. La gran ventaja de la sobrecarga de métodos es que.Sobrecarga de Métodos • • Otra de las ventajas que nos ofrece la POO orientada a objetos es poder tener en una misma clase varios métodos con el mismo nombre. } public void calculo(String s) {.} public long calculo(int k. Los siguientes son ejemplos válidos de sobrecarga: public void calculo(int k){...Sobrecarga de Métodos   Para que un método pueda sobrecargarse es imprescindible que se dé la siguiente condición: cada versión del método debe distinguirse de las otras en el número o tipo de parámetros.. lo que es indispensable es que se de la condición anterior. boolean b) {.} 10 . El tipo de devolución puede ser o no el mismo. Sobrecarga de Métodos  En cambio..} public int calculo(int k){. public void calculo(int k){. los siguientes métodos incumplen alguna de las condiciones de la sobrecarga por tanto no podrán estar los tres en la misma clase.} 11 .} public void calculo(int n){... } public void muestra(String s) { System.out. } } 12 .out.Sobrecarga de Métodos – Ejemplo2 public class Texto { public void muestra() { System.println("Texto enviado: “ + s).println("Texto predeterminado"). muestra().Sobrecarga de Métodos – Ejemplo2 public class AplicacionTexto { public static void main(String []args) { Texto ej = new Texto(). } } Aparecerá en la pantalla la frase: Texto predeterminado Pues se ha ejecutado la versión parámetros del método muestra 13 sin . ej. double y.i<a. } public double suma( double x. } 14 . double z) { return x + y + z.Sobrecarga de Métodos – Ejemplo3 public class Matematicas { public double suma( public double suma( double[] a) { double total =0. } } double x. for(int i=0.length. } return total.i++) { total+=a[i]. double y) { return x + y. println("Resultado de la suma ="+resultado).println("Resultado de la suma ="+resultado).suma(x).Sobrecarga de Métodos – Ejemplo3 public class AplicacionSobrecarga { public static void main(String args[]) { double resultado.9. resultado = M. resultado = M.suma(5.7) System. x[]={2.out.8}. } } 15 .9) System.5. resultado=M. System.7. Matematicas M = new Matematicas().println("Resultado de la suma ="+resultado).out.out.suma(5. Todas las variables estáticas en una clase son inicializadas antes que un objeto de esa clase pueda ser creado 16 .Atributos Estáticos El valor de un atributo estático es el mismo para todas las instancias de la clase. Esto es lo que la variable nos da: Un valor compartido por todas las instancias de una clase en lugar de un valor por instancia. contador++.Atributos Estáticos – Ejemplo4 public class Empleado{ private String nombres. } 17 . public Empleado(String nom. private static int contador=0. private String apellidos. apellidos=ape. String ape) { nombres=nom. } public static void setContador(int cont) { contador=cont. } public void setApellidos(String ape) { apellidos=ape. } 18 .Atributos Estáticos – Ejemplo4 public void setNombres(String nom) { nombres=nom. } public static int getContador() { return contador. } public String getApellidos() { return apellidos. } public String toString() { return apellidos+". "+nombres.Atributos Estáticos – Ejemplo4 public String getNombres() { return nombres. } } 19 . println(“Objetos creados:” +Empleado. Empleado e1= new Empleado("Torres". System. Empleado e2= new Empleado("Villanueva".out.println(“Objetos creados: "+e1.getContador()).out.println(e1)."Nelsa").getContador()). System.out.println(e2). } } 20 ."Fidel"). System.println(“Objetos creados : Empleado.getContador()).out.Atributos Estáticos – Ejemplo4 public class pruebaEmpleadoVariableEstatica{ public static void main(String args[]) throws IOException { System. System.out. 21 . Para saber cuantos objetos hemos creados llamamos al método estático getContador() que devuelve el valor de la variable contador.Atributos Estáticos    En el programa anterior usamos un atributo private static y un método public static. Esta variable va contando el numero de objetos de la clase Empleado que se van creando. esta variable se va incrementando en el constructor cada vez que se crea un objeto. El atributo contador se inicializa en cero por omisión. En la primera línea del programa llamamos Empleado. sólo se usa el nombre de la clase y luego el método getContador(). 22 .getContador() pues como es un método estático no es necesario usar un objeto de la clase para llamar al método.Atributos Estáticos   Un método declarado static no puede acceder a miembros de clase no estáticos. Un método static no tiene referencia this porque las variables de clase static y los métodos static existen independientemente de que existan o no objetos de clase. } 23 .Inicializar un atributo estático En el momento de declararla public class Ejemplo { public static final int r=12. random(). } } 24 . static { BAR_H = (double) Math.Inicializar un atributo estático En un inicializador estático public class Ejemplo2 { public static final double BAR_H. Es un buen lugar para inicializar variables estáticas finales. 25 .Inicializar un atributo estático Un inicializador estático es un bloque de código que corre cuando una clase es cargada antes que cualquier otro código que use la clase. int r = Math.Métodos Estáticos    Los métodos estáticos que se encuentran en una clase no necesitan una instancia de esa clase para poder utilizarlos. Para llamar a un método estático se usa el nombre de la clase y luego el nombre del método. 26 . La palabra static permite a un método correr sin necesidad de tener una instancia de una clase. int x = Math.2).round(42.sqrt(18). solo la clase. Ejemplo: En la clase Math de Java todos sus métodos son estáticos. Los métodos estáticos no pueden llamar a métodos que no son estáticos. 27 .Métodos Estáticos   Los métodos estáticos no pueden usar variables que no son estáticas. }while(n%d!=0 && d*d<=n).Métodos Estáticos public class Aritmetica { public static boolean esPrimo(int n) { int d=1. if(d*d>n) return true. } 28 . do{ d=d+1. else return false. return f. } 29 .i++) f=f*i.i.Métodos Estáticos public static int factorial(int n) { int f=1.i<=n. for(i=1. p=1. while(d<=a && d<=b) { if(a%d==0 && b%d==0) { p=p*d. a=a/d. } else d++. b=b/d. int b) { int d=2. } 30 .Métodos Estáticos public static int mcd(int a. return p. d<=n.println("Los divisores del numero son :"). System.println().out. for(d=1. System. } 31 .out.print(d+" ").Métodos Estáticos public static void reporteDivisores(int n) { int d.d++) if(n%d==0) System.out. while(n>1) { if(n % d ==0) { System.Métodos Estáticos public static void reporteFactoresPrimos(int n) { int d=2. } } } 32 . } else d=d+1. n=n/d.out.print(d+" "). esPrimo(n)) System.out.readLine()).out.in)).println("el Factorial es : “ + Aritmetica. else System. if(Aritmetica.parseInt(br.factorial(n)). } } 33 .print("Ingrese numero :").out. System.println("El numero no es primo").println("El numero es primo"). do{ System. }while(n<0). n=Integer. int n.Métodos Estáticos public class PruebaAritmetica{ public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.out. Establezca la tasaInteresAnual en 4%. ahorrador1 y ahorrador2. después calcule el interés mensual e imprima los nuevos saldos para ambos ahorradores. Cada Objeto de la clase debe contener un atributo llamado saldoAhorros.Ejercicio. con saldos de 2000 y 3000 respectivamente. multiplicando el saldoAhorros por la tasaInteresAnual dividida entre 12. Proporcione el método calcularInteresMensual para calcular el Interés Mensual. 34  . Use un atributo static llamado tasaInteresAnual para almacenar la tasa de Interés anual para todas las cuentas. Escriba un programa para probar la clase CuentaDeAhorros. Proporcione un método static llamado modificarTasaInteres para establecer la tasaInteresAnual en un nuevo valor. calcule el interés del siguiente mes e imprima los nuevos saldos para ambos ahorradores. que indique la cantidad que el ahorrador tiene actualmente en Depósito. este interés debe sumarse al saldoAhorros.  Crear una Clase llamada CuentaDeAhorros. Cree dos instancias de la clase CuentaDeAhorros. Luego establezca la tasaInteresAnual en 5%.
Copyright © 2024 DOKUMEN.SITE Inc.