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;
  }
}
 | 
      
          
  |