cours 5 héritage, interfaces, classes internes. poo-l3 h. fauconnier2 la classe object toutes...

Click here to load reader

Post on 04-Apr-2015

108 views

Category:

Documents

3 download

Embed Size (px)

TRANSCRIPT

  • Page 1
  • Cours 5 Hritage, Interfaces, classes internes
  • Page 2
  • POO-L3 H. Fauconnier2 La classe Object Toutes les classes hritent de la classe Object Object mthodes: public final Class getClass()ClassObject public int hashCode() public boolean equals(Object obj)Object protected Object clone() throws CloneNotSupportedExceptionObject CloneNotSupportedException public String toString()String protected void finalize() throws ThrowableThrowable (wait, notify,notfyall)
  • Page 3
  • POO-L3 H. Fauconnier3 Exemple class A{ int i; int j; A(int i,int j){ this.i=i;this.j=j;} } class D { T i; D(T i){ this.i=i; }
  • Page 4
  • POO-L3 H. Fauconnier4 Suite public static void main(String[] args) { A a=new A(1,2); A b=new A(1,2); A c=a; if (a==b) System.out.println("a==b"); else System.out.println("a!=b"); if (a.equals(b)) System.out.println("a equals b"); else System.out.println("a not equals b"); System.out.println("Objet a: "+a.toString()+" classe "+a.getClass()); System.out.println("a.hashCode()"+a.hashCode()); System.out.println("b.hashCode()"+b.hashCode()); System.out.println("c.hashCode()"+c.hashCode()); D x=new D (10); System.out.println("Objet x: "+x.toString()+" classe "+x.getClass()); }
  • Page 5
  • POO-L3 H. Fauconnier5 Rsultat: a!=b a not equals b Objet a: [email protected] classe class A a.hashCode()26022015 b.hashCode()3541984 c.hashCode()26022015 Objet x: [email protected] classe class D
  • Page 6
  • POO-L3 H. Fauconnier6 En redfinissant equals class B{ int i; int j; B(int i,int j){ this.i=i;this.j=j; } public boolean equals(Object o){ if (o instanceof B) return i==((B)o).i && j==((B)o).j; else return false; }
  • Page 7
  • POO-L3 H. Fauconnier7 Suite B d=new B(1,2); B e=new B(1,2); B f=e; if (d==e) System.out.println("e==d"); else System.out.println("d!=e"); if (d.equals(e)) System.out.println("d equals e"); else System.out.println("a not equals b"); System.out.println("Objet d: "+d.toString()); System.out.println("Objet e: "+e.toString()); System.out.println("d.hashCode()"+d.hashCode()); System.out.println("e.hashCode()"+e.hashCode());
  • Page 8
  • POO-L3 H. Fauconnier8 Rsultat: d!=e d equals e Objet d: [email protected] Objet e: [email protected] d.hashCode()25358555 e.hashCode()26399554
  • Page 9
  • Chapitre IV Interfaces, classes imbriques, Object
  • Page 10
  • POO-L3 H. Fauconnier10 Chapitre IV 1. Interfaces 2. Classes imbriques 3. Objets, clonage
  • Page 11
  • POO-L3 H. Fauconnier11 classes abstraites abstract class Benchmark{ abstract void benchmark(); public final long repeat(int c){ long start =System.nanoTime(); for(int i=0;i
  • POO-L3 H. Fauconnier42 Exemple parcourirparcourir public static Iterator parcourir(final Object[] data){ class Iter implements Iterator { private int pos=0; public boolean hasNext(){ return (pos = data.length) throw new NoSuchElementException(); return data[pos++]; } public void remove(){ throw new UnsupportedOperationException(); } return new Iter(); }
  • Page 43
  • POO-L3 H. Fauconnier43 et l'appel Integer[] tab=new Integer[12]; // afficher(parcourir(tab));
  • Page 44
  • POO-L3 H. Fauconnier44 Remarques parcourir() retourne un itrateur pour le tableau pass en paramtre. l'itrateur implmente Iterator mais dans une classe locale la mthode parcourir la mthode parcourir retourne un objet de cette classe. data[] est dclar final: mme si tous les objets locaux sont dans la porte de la classe locale, la classe locale ne peut accder aux variables locales que si elles sont dclares final.
  • Page 45
  • POO-L3 H. Fauconnier45 Anonymat mais tait-il utile de donner un nom cette classe qui ne sert qu' crer un objet Iter?
  • Page 46
  • POO-L3 H. Fauconnier46 Classe anonymeanonyme public static Iterator parcourir1( final Object[] data){ return new Iterator (){ private int pos=0; public boolean hasNext(){ return (pos = data.length) throw new NoSuchElementException(); return data[pos++]; } public void remove(){ throw new UnsupportedOperationException(); } }; }

View more