[Language]question sur public et extend
j ai un code conposer de 4 classes et je voudrait declarer chaque classe public mais quand je le fait il me retourne une erreur disant que je doit enregistrer le ficher sous le non de 3 differente autre classe.
Comment faire ????
ensuite j aimerais acceder a un parametre (capaciteMegaOctet) qui est calculer dans la sous classe DisqueDur pour l utiliser dans la sous classe CDRW
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
| public abstract class Support{
// quantité de données contenues sur le disque
protected int occupation;
// constructor
public Support(){
occupation = 0;
}
// la capacité du support
public abstract int capacite();
// sauvegarde de données, s'il y a suffisamment d'espace
public boolean sauvegarder(int taille){
if (capacite() - occupation >= taille){
occupation += taille;
return true;
}
return false;
}
// affichage de l'espace disponible
public String toString(){
int cap = capacite();
return (cap - occupation) +
" MB libres sur un total de " + cap + " MB libres";
}
}
class DVDR extends Support{
// nombre de layers du DVD
private boolean doubleCouche;
// constructor
public DVDR(boolean doubleCouche){
this.doubleCouche = doubleCouche;
}
// 4.7GB par layer
public int capacite(){
return 4489 * (doubleCouche ? 2 : 1);
}
// affichage
public String toString(){
return "DVD-R " + (doubleCouche ? "Dual Layer" : "")+ "\n\t" + super.toString();
}
}
public class DisqueDur extends Support{
// nombre de piste, de plateau et de cylindre
private int nbPiste, nbPlateau, nbCylindre;
//constructeur
public DisqueDur(int nbPiste, int nbPlateau, int nbCylindre){
this.nbPiste = nbPiste;
this.nbPlateau = nbPlateau;
this.nbCylindre = nbCylindre;
}
// capacite du disque dur en mega octet
public int capacite(){
int capaciteMegaOctet = nbPiste * nbPlateau * nbCylindre / 1024 ;
return capaciteMegaOctet ;
}
// redefinition de toString pour l affichage
public String toString(){
return "DisqueDur " + "\n\t" + super.toString();
}
}
public class CDRW extends Support {
// nombre de minute
private int nbMinutes;
//constructor
public CDRW(int nbMinutes){
this.nbMinutes = nbMinutes;
}
// capacite du cd-rw en minutes
public int capacite(){
return (capaciteMegaOctet )/ 8.75;
}
// redefinition de la methode toString pour l affichage
public String toString(){
return "CR-RW " + "\n\t" + super.toString();
}
}
public class Sauvegarde{
public static void main(String[] args)
{
Support[] supports = {
new DVDR(false),
new DisqueDur(427, 4, 32767),
new CDRW(74),
new DisqueDur(383, 3, 28671),
new DVDR(true),
new CDRW(80)
};
for (int i = 0; i < 10; i++)
for (int j = 0; j < supports.length; j++)
supports[j].sauvegarder((int) (Math.random() * 300) + 200);
System.out.println("Les supports apres quelques ecritures:\n");
for (int j = 0; j < supports.length; j++)
System.out.println(supports[j]);
}
} |
Citation:
C:\Documents and Settings\Comps\My Documents\1170-tp3\exo2\Sauvegarde.java:19: class Support is public, should be declared in a file named Support.java
public abstract class Support{
^
C:\Documents and Settings\Comps\My Documents\1170-tp3\exo2\Sauvegarde.java:74: class DisqueDur is public, should be declared in a file named DisqueDur.java
public class DisqueDur extends Support{
^
C:\Documents and Settings\Comps\My Documents\1170-tp3\exo2\Sauvegarde.java:103: class CDRW is public, should be declared in a file named CDRW.java
public class CDRW extends Support {
^
C:\Documents and Settings\Comps\My Documents\1170-tp3\exo2\Sauvegarde.java:116: cannot resolve symbol
symbol : variable capaciteMegaOctet
location: class CDRW
return (capaciteMegaOctet )/ 8.75;
^
C:\Documents and Settings\Comps\My Documents\1170-tp3\exo2\Sauvegarde.java:116: possible loss of precision
found : double
required: int
return (capaciteMegaOctet )/ 8.75;