Source de Prog65.java
public class Prog65 extends java.applet.Applet { public void paint(java.awt.Graphics g) { g.drawLine(10, 30, 200, 30); g.drawRect(20, 40, 100, 50); g.drawOval(140, 40, 50, 50); g.drawString("texte", 10, 120); } } |
Source de Prog66.java
import java.awt.* ; import java.applet.Applet; public class Prog66 extends Applet { public void paint(Graphics g) { g.drawLine(10, 30, 200, 30); g.drawRect(20, 40, 100, 50); g.drawOval(140, 40, 50, 50); g.drawString("texte", 10, 120); } } |
$ mkdir sousrep $ javac -d sousrep Prog1.java |
|
Source de Cercle10.java
package geometrie; public class Cercle10 { private double x, y, rayon; public Cercle10(double posX, double posY, double r) { x=posX; y=posY; rayon=r; } public double surface() { return Math.PI*Math.pow(rayon, 2.); } public double perimetre() { return 2*rayon*Math.PI; } } |
$ javac -d ./sousrep Cercle10.java |
Source de Rectangle10.java
package geometrie; public class Rectangle10 { private double x, y, largeur, hauteur; public Rectangle10(double valX, double valY, double valL, double valH) { x = valX; y = valY; largeur = valL; hauteur = valH; } public double perimetre() { return 2*(largeur + hauteur); } public double surface() { return largeur * hauteur; } } |
javac -d ./sousrep
Rectangle10.java
range le fichier Rectangle.class dans
le répertoire (déja crée) geometrie
Source de Prog68.java
import geometrie.Cercle10; import geometrie.Rectangle10; public class Prog68 { public static void main(String args[]) { Cercle10 cercle=new Cercle10(30,55,20); Rectangle10 rectangle=new Rectangle10(15,22,37,20); System.out.println ("surface totale = " +(cercle.surface()+rectangle.surface())); } } |
javac -classpath %CLASSPATH%;.\sousrep Prog68.java |
javac -classpath $CLASSPATH:./sousrep Prog68.java |
javac Prog68.java |
Source de Texte1.java
public class Texte1 { public String texte; public Texte1(String t) { texte=t; } public void afficher() { System.out.print(texte); } } |
Source de Texte11.java
public class Texte11 { public void toucher() { Texte1 t1 = new Texte1("coucou"); t1.afficher(); t1.texte="world"; } } |
Source de Texte2.java
public class Texte2 { private String texte; public Texte2(String t) { texte=t; } public void modifier(String t) { texte=t; } public void afficher() { System.out.print(texte); } } |
Source de Texte21.java
public class Texte21 extends Texte2 { public Texte21(String t) { super(t); } public void ajouter(String t) { texte = texte + t; } } |
$ javac Texte21.java Texte21.java:13: texte has private access in Texte2 texte= texte + t; ^ Texte21.java:13: texte has private access in Texte2 texte= texte + t; ^ 2 errors |
Source de Texte3.java
public class Texte3 { protected String texte; public Texte3(String t) { texte=t; } public void modifier(String t) { texte=t; } public void afficher() { System.out.print(texte); } } |
Source de Texte31.java
public class Texte31 extends Texte3 { public Texte31(String t) { super(t); } public void ajouter(String t) { texte= texte + t; } } |
Source de Texte4.java
package autrePackage; public class Texte4 { protected String texte; public Texte4(String t) { texte=t; } public void modifier(String t) { texte=t; } public void afficher() { System.out.print(texte); } } |
javac -d . Texte4.java |
Source de Texte41.java
package autrePackage; public class Texte41 { public void toucher() { Texte4 t4 = new Texte4("coucou"); t4.modifier("hello"); t4.texte="world"; } } |
javac -d . -classpath %CLASSPATH%;.\autrePackage Texte41.java |
Source de Texte42.java
import autrePackage.Texte4; public class Texte42 { public void toucher() { Texte4 t4 = new Texte4("coucou"); t4.modifier("hello"); t4.texte="world"; } } |
javac -classpath %CLASSPATH%;.\autrePackage Texte42.java Texte42.java:12: texte has protected access in autrePackage.Texte4 t4.texte="world"; ^ 1 error |
Voici un tableau qui résument les accès selon les modifiers.
modifier d'acces | dans la classe |
dans une sous- -classe |
dans le même package | ailleurs |
---|---|---|---|---|
private |
OK | |||
protected |
OK | OK | OK | |
public |
OK | OK | OK | OK |
package |
OK | OK |
|
import auto.Voiture; public class Traffic { public static void main (String a[]) { //.... Voiture maBagnole = new Voiture("666 MX 80"); // ... maBagnole.rouler(133.6); // chez le garagiste maBagnole.remplacerCompteur(); System.out.println("maBagnole a "+ +maBagnole.getKilometrage()+" km"); } } |
class CompteurKilometrique { final double ERROR = -1.0; double compTotal; // celui qui totalise double comptRelatif; // celui que vous pouvez remettre à // zéro dit compteur "journalier" CompteurKilometrique() { compTotal = comptRelatif = 0.0; } double getKilometrage() { return compTotal; } double getKmJournalier() { return isValide()? comptRelatif : ERROR ; } void resetKmJournalier() { comptRelatif = 0.0; } void comptabiliser(double kmParcouru) { if (isValide() && (kmParcouru > 0.0)) { compTotal += kmParcouru; comptRelatif += kmParcouru; } } void setKilometrage(double km) { if (isValide()) { compTotal = km; comptRelatif = 0.0; } } void invalider() { compTotal = ERROR; } boolean isValide() { return compTotal != ERROR; } CompteurKilometrique remplacerCompteur() { if (isValide()) { CompteurKilometrique nouveau = new CompteurKilometrique(); nouveau.setKilometrage(getKilometrage()); invalider(); return nouveau; } else return null; } } |
|