La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Operador == Método: equals() Método: hashCode() Método: toString() Palabra: static Atributos de clase Métodos de clase Palabra final Clases abstractas.

Presentaciones similares


Presentación del tema: "Operador == Método: equals() Método: hashCode() Método: toString() Palabra: static Atributos de clase Métodos de clase Palabra final Clases abstractas."— Transcripción de la presentación:

1

2

3 Operador == Método: equals() Método: hashCode() Método: toString() Palabra: static Atributos de clase Métodos de clase Palabra final Clases abstractas e Interfaces Nested e Inner Clases Ejemplos

4 El operador == determina si dos referencias son idénticas (Si hacen referencia al mismo objeto) El método equals determina si los objetos son iguales, pero no necesariamente idénticos. La implementación de equals en la clase Object utiliza el operador == Los usuarios pueden sobrescribir el método equals para implementar el testeo de igualdad específico de su lógica

5 public class MyDate { private int day; private int month; private int year; public MyDate(int day, int month, int year) { this.day = day; this.month = month; this.year = year; }

6 public boolean equals(Object o) { boolean result = false; if ( (o != null) && (o instanceof MyDate) ) { MyDate d = (MyDate) o; if ((day==d.day)&&(month==d.month)&&(year==d.year) ) { result = true; } return result; } public int hashCode() { return (day ^ month ^ year); }

7 Es reflexivo Para cualquier variable de referencia x, x.equals(x) debe retornar true. Es simétrico x.equals(y) == true si y solo si y.equals(x) == true Es transitiva x.equals(y) == true y y.equals(z) == true, entonces x.equals(z) == true

8 Es consistente Ante múltiples invocaciones iguales si no se producen cambios en la información utilizada para el cálculo de equals, el valor de retorno debería ser el mismo Para cualquier x != null, x.equals(null) debería ser falso

9 Si dos objetos son considerados iguales utilizando el método equals( ), entonces el valor de hashcode debe ser idéntico Por esto, se recomienda sobrescribir hashCode( ) si se sobrescribe equals( )

10 El valor hashcode de un objeto es utilizado por algunas clases que implementan colecciones. Colecciones como HashMap y HashSet utilizan este valor para determinar donde deben colocar el objeto en su estructura

11 Durante la misma ejecución el hashcode de un objeto debe ser el mismo, mientras no se modifique información que altere la comparación equals

12 Convierte un objeto en String Usado durante la concatenación de String Sobrescribir este método para brindar información sobre el objeto

13 Es utilizada como un modificador en variables, métodos y nested clases (anidadas). Declara que el atributo o método esta asociado a la clase y no a una instancia de objeto en particular Debido a lo antes mencionado, los miembros static son llamados miembros de clase, como atributo de clase o método de clase

14 Son compartidos a lo largo de todas las instancias de la clase public class Count { private int serialNumber; private static int counter = 0; public Count() { counter++; serialNumber = counter; }

15 Pueden ser accedidos desde fuera de la clase, sin una instancia de la clase(si esta marcada como public) public class OtherClass { public void incrementNumber() { Count1.counter++; }

16 Una clase puede contener código en un bloque static que no pertenece a ningún método. Los bloques de código static ejecutan solo una vez, cuando la clase se carga Un bloque static se utiliza usualmente para inicializar atributos static (de la clase)

17 public class Count4 { public static int counter; static { counter = Integer.getInteger("myApp.Count4.counter").intValue(); } public class TestStaticInit { public static void main(String[] args) { System.out.println("counter = "+ Count4.counter); } La salida del programa es la siguiente: java –DmyApp.Count4.counter=47 TestStaticInit counter = 47

18 No se puede extender una clase final No se puede sobrescribir un método final Una variable final es una constante Se puede setear una variable final solo una vez, pero la asignación puede ser independiente de la declaración

19 Constantes: public class Bank { private static final doubleDEFAULT_INTEREST_RATE=3.2;... // more declarations }

20 Atributo final en blanco de instancia public class Customer { private final long customerID; public Customer() { customerID = createID(); } public long getID() { return customerID; } private long createID() { return... // generate new ID }

21 El problema: Cuando en una superclase se tiene que implementar un método que van a heredar sus subclases y no se le puede dar comportamiento. Cuando diseñamos una clase solo para heredar y no queremos permitir crear una instancia nunca

22 Java permite al diseñador que una superclase declara un método que no provee implementación. Este método es llamado abstracto. Se utiliza la palabra reservada abstract La implementación del método la va a realizar la subclase. Cualquier clase con por lo menos un método abstracta, es una clase abstracta y se tiene que declarar de esta forma

23 El compilar previene el intanciar una clase abstracta Hacer new de una clase abstracta no esta permitido Puede tener: Atributos Métodos concretos Constructores

24 Una interfaz pública es un contrato entre el código cliente y la clase que implementa esa interfaz. En java, es la declaración formal de dicho contrato y todos los métodos no tienen implementación Muchas clases no relacionadas pueden implementar la misma interfase Una clase puede implementar muchas interfases no relacionadas

25 public interface Flyer { public void takeOff(); public void land(); public void fly(); } public class Airplane implements Flyer { public void takeOff() { // accelerate until lift-off // raise landing gear } public void land() { // lower landing gear // deccelerate and lower flaps until touch-down // apply breaks } public void fly() { // keep those engines running }

26

27

28 public class Bird extends Animal implements Flyer { public void takeOff() { /* take-off implementation */ } public void land() { /* landing implementation */ } public void fly() { /* fly implementation */ } public void buildNest() { /* nest building behavior */ } public void layEggs() { /* egg laying behavior */ } public void eat() { /* override eating behavior */ } }

29

30 public class Harbor { public static void main(String[] args) { Harbor bostonHarbor = new Harbor(); RiverBarge barge = new RiverBarge(); SeaPlane sPlane = new SeaPlane(); bostonHarbor.givePermissionToDock(barge); bostonHarbor.givePermissionToDock(sPlane); } private void givePermissionToDock(Sailer s) { s.dock(); }

31 Declarar métodos que una o más clases esperan implementar Determinar una interfaz de objetos para programar, sin revelar el cuerpo actual de la clase. Capturar similitudes ente clases que no están relacionadas, sin forzar una relación entre ambas Simular herencia múltiple declarando que una clase implementa varias interfases

32 Agregadas en Java Development Kit (JDK) 1.1 Permite la definición de una clase dentro de otra definición de clase Grupo de clases que lógicamente tiene sentido que estén juntas Se puede controlar la visibilidad de una dentro de la otra Se utilizan para implementar detalles de implementación que no deben ser compartidas por otras clases

33

34

35

36 Dentro del alcance que contiene la definición de la clase, se puede hacer referencia a la misma por el nombre. Fuera de dicho alcance se debe usar el nombre completo(ejemplo Outer.Nested) Puedo definir nested clases dentro de métodos. Estas clases se llaman locales. Las clases locales pueden acceder a variables locales, incluyendo argumentos del método, del bloque que la contenga, pero tienen que ser final

37 Excepto la clases locales, las clases nested pueden ser declaradas con cualquier nivel de protección Las clases nested pueden ser abstractas Una interfaz puede ser nested, entonces puede ser implementada en forma normal o por otra clase nested Las clases nested pueden acceder miembros static de la clase que la contiene

38 Nested clases pueden ser declaradas static Las clases nested no static son llamadas inner clases

39 Qué es java.lang? Clase Object Wrapper Classes Utilidades de Conversión de tipos Clase String Clase StringBuffer Clase Math

40 Thinking in Java Bruce Eckel The Java Tutorial


Descargar ppt "Operador == Método: equals() Método: hashCode() Método: toString() Palabra: static Atributos de clase Métodos de clase Palabra final Clases abstractas."

Presentaciones similares


Anuncios Google