Vous êtes sur la page 1sur 102

JAVA

EZZATI

FST SETTAT

JAVA

Introduction & Historique


Java trouve ses origines dans les annes 1990. Les premires versions se java datent 1995. Java est dvelopp par Sun MicroSystems. Il est fortement inspir des langages C et C++. Java est multi plates-formes : les programmes tournent sans modification sur :Windows, Unix et Mac os. Portable grce lexcution par une machine virtuelle. Java est presque un pure langage Orient Objet:
Un programme Java est constitu uniquement de classes Les types primitifs : int, float qui ne sont pas des objets
JAVA 2

Introduction & Historique


Java est dot, en standard, de bibliothques de classes comprenant la gestion des interfaces graphiques (fentres, boites de dialogue,menus, graphisme), la programmation multi-threads (multitches), la gestion des exceptions, les accs aux fichiers et au rseau

Contrairement au C/C++, le compilateur Java ne gnre pas de fichier excutable. Il cre pour chacune des classes (tp.java) d'un fichier Java un fichier .class (tp.class) qui sera interprt par la Machine Virtuelle Java.
Ensemble doutils (java, javac, jdb, javadoc, jar)
JAVA 3

Introduction & Historique


En Java, tout se trouve dans une classe. Il ne peut y avoir de dclarations ou de code en dehors du corps d'une classe. La classe elle mme ne contient pas directement du code. Elle contient des dclarations de variables globales, que l'on appelle des attributs et des mthodes. Le code se trouve exclusivement dans le corps des mthodes, mais ces dernires peuvent aussi contenir des dclarations de variables locales (visibles uniquement dans le corps de la mthode). Java dveloppe deux genres de programmes : Les applications (programmes ou logiciels classiques). Les applets qui sont des programmes java insrs dans un document HTML.
JAVA 4

Introduction & Historique


JRE: Java Runtime Environement. Dsigne la machine virtuelle et l'ensemble des outils ncessaires pour excuter une application Java sur votr machine. JDK: Java Development Kit. Ancien terme SDK. SDK: Standard Development KitLensemble doutils ncessaires au dveloppeur Java. Celui-ci contient: JRE Les bibliothques de dveloppement Le compilateur IDE: Eclipse Netbeans Jbuilder IntelliJ
JAVA 5

Mon premier programme en Java


Soit le programme suivant qui affiche lcran :
Bonjour cest mon premier programme en Java

JAVA

Mon premier programme en Java


Un programme autonome destin tre excut doit contenir une mthode particulire nomme main() dfinie de la manire suivante:
public static void main(String args[]) { /* corps de la mthode main */ }

Le paramtre args de la mthode main() est un tableau dobjets de type String. Il nest pas utilis mais, il est exig par le compilateur Java. La classe contenant la mthode main() doit obligatoirement tre public afin que la machine virtuelle y accs. Notre premier exemple TP1 est rduit la dfinition dune mthode main().
JAVA 7

Mon premier programme en Java


Un fichier source peut contenir plusieurs classes mais une seule doit tre public (Dans notre premier programme par exemple TP1 est public). Le nom du fichier source est identique au nom de la classe publique qu'il contient, suivi du suffixe .java.

Dans lexemple : TP1.java

JAVA

Compilation & Excution


La compilation dun programme Java ne traduit pas directement le code source en fichier excutable. Elle traduit dabord le code source en un code intermdiaire appel bytecode . Cest le bytecode qui sera ensuite excut par une machine virtuelle (JVM ; Java Virtual Machine). Ceci permet de rendre le code indpendant de la machine qui va excuter le programme.

JAVA

Java : Elments de bases


Les identificateurs commencent par une lettre ou par _ Les mots-cls et les signes (-, +, @, ) sont interdit dans les identificateurs que soit des attributs ou des mthodes. Un identificateur ne commence jamais avec un chiffre. Java distingue entre minuscules et majuscules Les instructions terminent par un point-virgule ; Les blocs sont dlimits par un couple d'accolades {...} Les caractres // dfinissent un commentaire stend jusquau de fin de ligne. /* commentaires sur plusieurs lignes */

JAVA

10

Identificateurs et mots rservs


abstract assert boolean continue default do for goto if import instanceof int interface long native new package private public return short static strictfp super switch synchronized this

break
byte case catch char class const*

double
else enum extends final finally float

implements protected

throw
throws transient try void volatile while

JAVA

11

Elments de bases : types entiers

Type
byte short int long

Taille (oct) Valeur minimale


1 2 4 8 -128 -32 786 -2 147 483 648

Valeur maximale
127 32 767 2 147 483 647

-923372036854775808 -923372036854775807

JAVA

12

Types entiers : Exemple

JAVA

13

Elments de bases : types rels


Type float double Taille(oct) 4 8 Prcision 7 15 Valeur minimale -1.40239846E-45 4.9406564584124654E-324 Valeur maximale 3.40282347E38 1.797693134862316E308

f ou d aprs une valeur numrique spcifier le type.

double a = 3.14d ; double b = 3.14f ;

JAVA

14

Types rels : Exemple

JAVA

15

Elments de bases : types caractre


Notation \b \t \n \f \r \ \ \\ Code Unicode 0008 0009 000a 000c 000d 0022 0027 005c Abrviation usuelle BS(BackSpace) HT(Horizontal Tabulation) LF(LineFeed) FF(FormFeed) CR(CariageReturn) Signification Retour arrire Tabulation horizontale Saut de ligne Saut de page Retour chariot

Java permet de manipuler des caractres

Java reprsente les caractres sur 2 octets

JAVA

16

Types caractres: Exemple

JAVA

17

Constante et mot cl final


Java permet de dclarer des variables et des expression dont la valeur est inchangeable en utilisant le mot cl final.

JAVA

18

Lecture au clavier
Laffichage (Java) ne pose pas de problme on peut toujours

utiliser des instructions telleques :


System.out.println(" valeur = " + a+b); //Concatnation Ou bien: System.out.print(" valeur = " + (a+b)); //Calcul Mais pour la lecture java ne prvoit rien. Mais, il existe deux solutions (voir www.editions-eyrolles.com) : Clavier.java Scanner
JAVA 19

Clavier.java
import java.io.* ; public class Clavier { public static String lireString () // lecture dune chaine { String ligne_lue = null ; try{InputStreamReader lecteur = new InputStreamReader(System.in); BufferedReader entree = new BufferedReader (lecteur) ; ligne_lue = entree.readLine() ; } catch (IOException err) { System.exit(0) ; } return ligne_lue ; } public static float lireFloat () // lecture dun float { float x=0 ; // valeur a lire try { String ligne_lue = lireString() ; x = Float.parseFloat(ligne_lue) ; } catch (NumberFormatException err) { System.out.println ("*** Erreur de donnee ***") ; System.exit(0) ; } return x ; }
JAVA 20

Clavier.java (suite)
public static double lireDouble () // lecture dun double { double x=0 ; // valeur a lire try { String ligne_lue = lireString() ; x = Double.parseDouble(ligne_lue) ; } catch (NumberFormatException err) { System.out.println ("*** Erreur de donnee ***") ; System.exit(0) ; } return x ; } public static int lireInt () // lecture dun int { int n=0 ; // valeur a lire try { String ligne_lue = lireString() ; n = Integer.parseInt(ligne_lue) ; } catch (NumberFormatException err) { System.out.println ("*** Erreur de donnee ***") ; System.exit(0) ; } return n ; }

JAVA

21

Exemple de lecture (Clavier)

JAVA

22

JAVA

23

Exemple de lecture (Scanner)

JAVA

24

Les oprateurs arithmtiques


symbole + * / % description soustraction addition multiplication div ision modulo Nombre doprandes 2 2 2 2 2 exemple ab a+ b a*b a /b a%b

En Java loprateur dexponentiation nexiste pas : pour calculer a pow b en utilise la fonction prdfinie : Math.pow(a, b) Oppos de a est a.
JAVA 25

JAVA

26

Les oprateurs relationnelles


Oprateur Signification

<
<= > >= == !=

Infrieur
infrieur ou gale Suprieur Suprieur ou gale gal diffrent

JAVA

27

Les oprateurs logiques


Oprateur Signification

!
&

Ngation
Et

^
| && ||

ou exclusif
Ou inclusif Et avec court circuit Ou inclusif avec court circuit

JAVA

28

Les oprateurs dincrmentation / dcrmentation


symbole ++ ++
---

description princrmentation postincrmentation prdcrmentation postdcrmentation

Nb oprande 1 1 1 1

exemple ++i i+ +
-- i

i --

JAVA

29

Les oprateurs daffectation largie


symbole += -= *= /= exemple i+ = 4 i-= 4 i*= 4 i/= 4 symbole ^= &= < < = (dcalage) >>= > > > = (dcalage)

JAVA

30

Instructions de contrle
Instruction if Syntaxe: if (condition) bloc_instruction1 else bloc_instruction2

JAVA

31

Instructions de contrle
instruction switch

Syntaxe:
switch(expression) {case constante1 : case constante2 : case constanteN : default: }
JAVA 32

bloc dinstructions1; break; bloc dinstructions2; break; bloc dinstructionsN; break; bloc dinstructions;

Instructions de contrle
instruction for Syntaxe: for(initialisation; condition; incrmentation) { bloc dinstructions;} Exemple:

for(i=1;i<=3;i++) system.out.println(i+, );
Rsultat: 1, 2, 3,

JAVA

33

Instructions de contrle
instruction while Syntaxe: while (condition) { bloc dinstructions; } Exemple i=1; while(i<=3) { system.out.println(i+, ); i++; }

Rsultat: 1, 2, 3,
JAVA 34

Instructions de contrle
instruction do while Syntaxe: do { bloc d instructions; } while (condition); Exemple i=1; do {system.out.println(i+, ); i++; } while(i<=3); Rsultat: 1, 2, 3,

JAVA

35

Exercice

Calcul de N! avec N lu au clavier


1- utiliser for 2- utiliser while

3- utiliser do while

JAVA

36

Instruction de branchement inconditionnel


Dans une boucle ( while, dowhile, for) break sert interrompre lexcution de cette boucle.

JAVA

37

Instruction de branchement inconditionnel


Linstruction continue permet de sauter des instructions en changeant directement le conteur de la boucle.

JAVA

38

Notion de Classe & dObjet

JAVA

39

JAVA

40

Attributs Variable global de la classe Accessible depuis toutes les mthodes de la classe Mthode Les mthodes ne peuvent tre crer que comme des composante dune classe. Une mthode ne peut tre appele que pour un objet.

Lappel dune mthode pour un objet se ralise en nommant lobjet suivi dun point suivi du nom de la mthode et de sa liste darguments:
nomObjet.nomMethode(arg1, arg2, .)

JAVA

41

Objet il nexiste pas de variable de type objet

Voiture BM=new Voiture(2, true, 160.0f)


Toute chose est un objet. Un objet est une variable amliore Classe Des objets semblables, leur tat durant l'excution du programme mis part, sont regroups ensemble dans des classes d'objets . Le mot clef class est utilis dans la plupart des langages orient objet.
JAVA 42

Classe On utilise les classes exactement de la mme manire que les types de donnes prdfinis. On peut crer des variables dune classe (appels objets ou instances) et les manipuler comme des variables dun type prdfini. Les objets d'une mme classe partagent des caractristiques communes, mais chaque objet a son propre tat.

JAVA

43

Constructeurs
On peut garantir linitialisation dun objet grce une mthode spciale appele constructeur qui permet dautomatiser le mcanisme dinitialisation dun objet. Un constructeur est une mthode appele au moment de la cration de lobjet. La cration dun objet passe par lapplication de loprateur new sur les constructeurs de la classe. Exemple: Voiture BM=new Voiture(2, false,44.50f); Voiture Ford; Ford = new Voiture(3, true, 55.88f);
JAVA 44

Exemple : Constructeurs

JAVA

45

Exemple : Constructeurs

JAVA

46

Exemple : Constructeurs

JAVA

47

Le destructeur
Un destructeur (et un seul) peut tre dfini, pour tre utilis lors de la destruction de l'objet. Celui-ci doit forcment se nommer finalize, il ne prend aucun paramtre et ne renvoie aucun type (void). Exemple :

JAVA

48

Les modificateurs
Les modificateurs sont des mots-cl spciaux du langage qui modifient la dfinition et le comportement dune classe, dune mthode ou dune variable. On peut les classer en quatre grandes catgories : les modificateurs permettant de contrler laccs une classe, une mthode ou une variable : public, private et protected ; le modificateur static utilis pour les variables et les mthodes de classe ; le modificateur final permettant de figer limplmentation dune classe, dune mthode ou dune variable ;

le modificateur abstract pour la cration de classes ou de mthodes abstraites.


JAVA 49

Les modificateurs
Il existe dautres modificateurs que nous allons voir plus tard tels que : synchronized et volatile (utiliss pour les threads) et native (utilis pour la cration de mthodes natives). public On utilise le mot cl public pour signifier quune classe, une mthode ou une variable sont accessibles nimporte o dans lunivers des classes Java (mme dans dautres packages). Le mot-cl public est le mode par dfaut.

JAVA

50

Les modificateurs
private personne ne peut accder ces dfinitions part les mthodes interne (Il limite la visibilit des mthodes et des variables dinstance la classe dans laquelle elles sont dfinies) les sous-classes ne peuvent hriter ni de variables prives, ni de mthodes prives. Protected forme de protection entre classe et sous-classes. les mthodes et les variables dune classe donne restent accessibles toute classe du mme package (diffrence avec C++), mais ne sont accessibles, en dehors du package, quaux sous-classes de la classe laquelle elles appartiennent.
JAVA 51

Les modificateurs
static est utilis pour dfinir des variables ou des mthodes de classe. Le mot-cl static indique que llment est stock dans la classe. final sapplique aux classes, aux mthodes et aux variables : empche le sous-classement de la classe ;

final signifie que la mthode ne peut pas tre redfinie par les sousclasses ;
final indique que la variable est constante. modificateur class NomClass [extends ClassMere] [implemenents Interfaces] {// champs et les mthodes }
JAVA 52

Imbrication de classe
Dans java une classe est dite interne lorsque sa dnition est situe lintrieur de la dnition dune autre classe. Exemple:

JAVA

53

JAVA

54

Auto-rference : le mot cl this


Lobjet courant est dsign par le mot cl this. permet de dsigner lobjet dans lequel on se trouve. dsigne une rfrence particulire qui est un membre cach utilit de lobjet courant . Rendre explicite laccs aux propres attributs et mthodes dfinies dans la classe.

JAVA

55

Auto-rference : le mot cl this Exemple

JAVA

56

Tableaux
Les tableaux sont considrs comme des objets

Les lments dun tableau peuvent tre


Des variables dun type primitif (int, char, float, double,) Des rfrences sur des objets

Cration
Dclaration Dimensionnement

Initialisation
Attention: En java il n'est pas possible de dfinir des tableaux de taille statique la dclaration: float[7] Tab; //erreur de compilation
JAVA 57

Tableaux : Exemple 1

JAVA

58

Tableaux : Exemple 2

JAVA

59

Tableaux plusieurs indices


Tableaux dont les lments sont eux-mmes des tableaux Deux cas: Tableau rectangulaire Tableau non rectangulaire Exemple :

JAVA

60

Tableaux plusieurs indices

JAVA

61

Mthodes
main la premire mthode excute par une application Java lors de son lancement.

syntaxe public static void main (String args[ ]) { ... }


Une application Java peut avoir des arguments, introduits aprs le nom de lapplication.

La mthode main doit avoir comme paramtres la chane


" String [ ] args ", ncessaire pour stocker les arguments introduits. "args.length" permet de dterminer le nombre darguments introduits aprs le nom de lapplication.

JAVA

62

Mthodes : main

JAVA

63

Mthodes
Les mthodes implmentent les traitements de la classe Nimporte quelle excution fait intervenir des mthodes Une mthode a deux parties : dclaration & corps Le type retourn peut tre lmentaire ou un objet. Si la mthode ne retourne rien on utilise void. syntaxe : modificateurs type_retourn nom_mthode (arg1, ... ) { // dfinition des variables locales et du bloc d'instructions }
JAVA 64

Mthodes : Exemple

JAVA

65

Rfrence dobjets
Personne p1=p2 ; // cela signifie que p1 et p2 rfrencent le mme objet Personne p3=new Personne(p1) ;// P 3 est une copie de p1 Exercice : Dans le programme dj fait tester la
rfrence dobjets

JAVA

66

Passage d'un objet une fonction

Un objet n'est manipul que via une rfrence (un pointeur) sur lui. Ce qui est donc transmis une fonction, n'est pas l'objet lui-mme mais une rfrence sur cet objet. C'est donc la valeur de la rfrence et non la valeur de l'objet lui-mme qui est duplique dans le paramtre formel : il n'y a pas construction d'un nouvel objet.

JAVA

67

Encapsuler les paramtres de sortie d'une fonction dans un objet

JAVA

68

Encapsuler les paramtres de sortie d'une fonction dans un objet

JAVA

69

Mthodes : surcharge
La surcharge d'une mthode permet de dfinir plusieurs fois une mme mthode avec des arguments diffrents.

Le compilateur choisi la mthode qui doit tre appele en fonction du nombre et du type des arguments.
La signature d'une mthode comprend le nom de la classe, le nom de la mthode, le nombre et les types des paramtres. Il est possible de donner le mme nom deux mthodes diffrentes condition que les signatures de ces deux mthodes soient diffrentes.

JAVA

EZZATI

70

Mthodes : surcharge

JAVA

71

Les paquetages
Les classes Java sont regroupes en paquetages (packages en anglais) comparables aux bibliothques des autres langages comme le langage C++, ... Linstruction : import MesClasses ; permet lutilisation de toutes les classes dont les paquetage MesClasses est engendr. Exemple: import nomClasse; import nomPack.*; // Importe une classe // Importe toutes les classes de nomPack import nomPack.nomClasse; // Importe une classe de nomPack Le package par dfaut : cest le package qui na pas de nom, et auquel appartiennent toutes les classes dun mme rpertoire.
JAVA 72

Les paquetages
Quelques paquetages du SDK (Software Development Kit) java.lang : classes de base de Java java.util : utilitaires java.io : entres-sorties java.awt : interface graphique javax.swing : interface graphique avance java.applet : applets java.net : rseau java.rmi : distribution des objets
JAVA

EZZATI

73

Les paquetages : crer un package


Pour crer un package, il suffit de commencer le fichier source contenant les classes regrouper par l'instruction package suivi du nom que l'on dsire donner au package. Un package portant le nom PaquetageA doit tre stock dans un rpertoire de nom PaquetageA. Par dfaut le compilateur (ainsi que la machine virtuelle) recherchent les classes dans le rpertoire courant et le rpertoire des classes standards.

JAVA

74

JAVA

75

HRITAGE
La notion dhritage constitue lun des fondements de la programmation OO. L'hritage est un mcanisme qui permet une classe d'hriter l'ensemble du comportement et des attributs d'une autre classe. Permet de dfinir une nouvelle classe, dite classe drive, partir dune classe existante dite classe de base (super classe). La classe driv se comporte comme la classe de base mais avec quelques diffrences. on a seulement besoin du code compil de la clase de base.

JAVA

76

HRITAGE
On peut par exemple: ajouter de nouvelles mthodes adapter (modifier) certaines mthodes Syntaxe: class <ClasseDerivee> extends <ClasseDeBase> Interprtation: Permet de dfinir un lien d'hritage entre deux classes: La classe <ClasseDeBase> est le nom de la classe de base. Elle s'appelle une classe mre, une classe parente ou une super-classe. La classe <ClasseDerivee> est le nom de la classe drive Par dfaut il ny a pas de extends dans la dfinition dune classe: toutes les classes hritent de la classe Object.
JAVA 77

JAVA

78

HRITAGE : CONSTRUCTEURS
Possibilit comme les mthodes de rutiliser le code des constructeurs de la super-classe. Lappel au constructeur de la super-classe doit se faire absolument en premire instruction. La premire instruction dun constructeur peut tre un appel un constructeur de la classe mre : super(...) ou un autre constructeur de la classe : this(...) Interdit de placer this() ou super() ailleurs quen premire instruction dun constructeur.
JAVA 79

HRITAGE : CONSTRUCTEURS
Le constructeur de la classe drive complte la construction de lobjet driv, et ce, en appelant en premier lieu le constructeur de la classe de base. Toutefois, il existe des cas particuliers qui sont : cas1 : La classe de base ne possde aucun constructeur Dans ce cas, si la classe drive veut dfinir son propre constructeur, elle peut optionnellement appeler dans la 1re instruction de constructeur la clause super () pour dsigner le constructeur par dfaut de la classe de base. Cas2 : La classe drive ne possde pas un constructeur Dans ce cas, le constructeur par dfaut de la classe drive doit initialiser les attributs de la classe drive et appeler :

JAVA

80

HRITAGE : CONSTRUCTEURS
Le constructeur par dfaut de la classe de base si elle ne possde aucun constructeur. Le constructeur sans argument si elle possde au moins un constructeur. Dans le cas o il n y a pas un constructeur sans argument et il y a dautres constructeurs avec arguments, le compilateur gnre des erreurs.

JAVA

81

HRITAGE : CONSTRUCTEURS
Exemple1 (cas1) Class A { // pas de constructeur } class B extends A { public B(.) {super() ; //appel de constructeur par dfaut de A } B b = new B(); // Appel de constructeur1 de A
82

JAVA

HRITAGE : CONSTRUCTEURS
Exemple2 (cas2) Class A { public A() {.} //constructeur1 public A ( int n) {..} //constructeur2 } class B extends A { // ..pas de constructeur } B b = new B(); // Appel de constructeur1 de A
JAVA 83

HRITAGE : CONSTRUCTEURS
Exemple3 (cas 2) Class A { public A ( int n) {..} //constructeur1 } class B extends A { // ..pas de constructeur } B b = new B(); /* On obtient une erreur de compilation car A ne dispose pas un constructeurs sans argument et possde un autre constructeur*/
JAVA 84

HRITAGE : CONSTRUCTEURS
class graphiques { private x, y ; public graphiques (int x1, int y1) {x = x1 ; y=y1 ;} //autres mthodes } class cercle extends graphiques { private double rayon ; cercle ( int a, int b, double r) { super (a, b) ; //appelle le constructeur de la classe de base rayon = r ; } //autres mthodes }

JAVA

85

HRITAGE
L'hritage successif de classes permet de dfinir une hirarchie de classe qui se compose de super classes et de sous classes. Une classe ne peut avoir qu'une seule classe mre : il n'y a pas d'hritage multiple en java.

Object est la classe parente de toutes les classes en java


Toutes les variables et les mthodes contenues dans Object sont accessibles partir de n'importe quelle classe car par hritage successif toutes les classes hritent de la classe Object. Java ne permet pas lhritage multiple: chaque classe a une et une seule classe mre dont elle hrite les variables et les mthodes.
JAVA 86

Polymorphisme
Soit B une classe qui hrite dune autre classe A. f( ) une mthode de A qui redfinie dans B. g( ) une mthode de A. h( ) une mthode de B.

JAVA

87

Polymorphisme

JAVA

88

Polymorphisme
Lappel se fond sur le type effectif de lobjet rfrenc par ab au moment de lappel et non sur le type de la variable ab. Il faut noter que la mme criture a.f(); peut correspondre des appels diffrents de la mthode f(). Ceci est ralis grce au polymorphisme. Le Polymorphisme veut dire que le mme service peut avoir un comportement diffrent suivant la classe dans laquelle il est utilis. Cest un concept fondamental de la programmation objet, indispensable pour une utilisation efficace de lhritage. Pour lobjet ab si f( ) est redfinie dans B, alors cest cette mthode qui sera excute sinon, la recherche de f() se poursuit dans la classe mre de B, puis dans la classe mre de cette classe mre, et ainsi de suite, jusqu trouver f() qui sera alors excute.
JAVA 89

Polymorphisme
Le polymorphisme permet dviter les codes qui comportent de nombreux embranchements et tests. Exemple : Considrons une classe TerreVhicule. Supposons que les classes Voiture et Camion hritent de la super classe TerreVhicule. Dans un tableau htrogne, on ranges des objets de type Voiture , Camion . Ensuite on affiche le contenu du tableau :

JAVA

90

JAVA

91

Polymorphisme
instanceof: Voiture instanceof Vhicule retourne true

Inconvnients : Si on veut rajouter un Fourgon, on est obliger de: changer dans le code source aux niveaux dfinition de la classe Vhicule (rajouter la mthode public void appelfourgon() {}) En exploitant le polymorphisme, on peut : Eviter les tests Rendre le code extensible Exemple:

JAVA

92

JAVA

93

Cast (transtypage)
Le cast est le fait de forcer le compilateur considrer un objet comme tant dun type qui nest pas le type dclar ou rel de lobjet. Les seuls casts autoriss entre classes sont les casts entre classe mre et classes filles. UpCast : classe fille classe mre implicite DownCast : classe mre classe fille explicite Toujours accept par le compilateur, mais peut provoquer une erreur lexcution ;

JAVA

94

Cast (transtypage)

JAVA

95

Classe et mthodes abstraites


Une mthode est dite abstraite si on la dclare sans donner son implmentation: on ne donne que le type de la valeur de retour et la signature (lentte de la mthode). Les mthodes abstraite sont dclare avec le mot cl abstract. La mthode abstraite sera implmente par les classes filles. Une classe doit tre dclare abstraite si elle contient une mthode abstraite : public abstract class NomClasse{... Il est interdit de crer une instance dune classe abstraite.
JAVA 96

Classe abstraites : Intrt


On peut placer dans une classe abstraite toutes les fonctionnalits dont on souhaite disposer pour toute ses descendantes, sous forme : d implmentation complte de mthodes (non abstraites) et de champs lorsquils sont communs toutes ses descendantes. dinterface de mthodes abstraites dont on est alors sr quelles existeront dans toute classe drive instanciable.

JAVA

97

Classe abstraites : Exemple


Soient Etudiant, Mater, Licence et Stocker telles que: Stocker des noms dEtudiant de deux niveaux (Mater, Licence) dans une liste puis les afficher.

JAVA

98

JAVA

99

JAVA

100

JAVA

101

JAVA

102