Oppure

Loading
29/01/11 1:19
f.l.c.r
Salve ragazzi,

ecco il codice, è molto semplice:

package Polimorfismo2;

public class File {

	private byte[] arrayOfByte;

	public File(){
		arrayOfByte = new byte[0];
	}

	public File(int dimensione){
		arrayOfByte = new byte[dimensione];
	}
	
	public File(byte[] bytes){
		if(bytes==null){
			arrayOfByte = new byte[0];
		}
		else
			arrayOfByte = bytes;
	}

	public int getSize(){
		return arrayOfByte.length;
	}

	public boolean isBiggerThan(){
		if(this.getSize()>10)
			return true;
		else
			return false;
	}
	
	public boolean equals(File f){
		boolean eq = false;
		if(this == f){
			eq = true;
		}
		else if(f==null){
			eq = false;
		}
		/*else if(this.getSize() == f.getSize()){
			eq = true;
		}*/
		// Come fa ad accedere se l'attributo di istanza è stato dichiarato come private
		else if(this.arrayOfByte.length != f.arrayOfByte.length)
		{
			eq = false;
		}
		else
		{
			for(int i=0;i<this.arrayOfByte.length;i++){
				if(this.arrayOfByte[i]!=f.arrayOfByte[i]){
					eq = false;
					break;
				}
			}
		}
		return eq;
	}
	
	public boolean equals(Object o){
		if(this==o){
			return true;
		}
		if(o instanceof File){
			return this.equals((File)o);
		}
		else
			return false;
		
	}
}




Mi spiegate perchè quando passo come argomento al metodo equals (quello che non overridda l'omonimo della calsse Object), posso accedere direttamente all'attributo dell' oggetto f che è stato etichettato come private?

In teoria non dovrei poterci accedere da un'altra classe.

Help me!
aaa
29/01/11 9:46
Il Totem
Infatti stai accedendo all'array dalla stessa classe File, poiché entrambe le istanze che saranno coinvolte a runtime - l'oggetto chiamante e l'argomento passato a equals - saranno dello stesso tipo.
aaa
29/01/11 11:11
f.l.c.r
Cavolo che stupido, mi è permesso perchè sono proprio all'interno della classe File!
Ero stanco ieri notte..:-|:-|
aaa