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";
}
}
|
COMPILATION de Texte11.java
sans erreurSource 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
|
La variable
texte de Texte2 est inaccessible, même dans une sous-classe
de Texte2.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;
}
}
|
COMPILATION
de Texte11.java sans erreur
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;
}
}
|
|