@Override // instruct the compiler that we do indeed intend for this method to override the superclass' (Object) version
	public boolean equals(Object o)
	{
		if(!(o instanceof Matrix)) // make sure the Object we're comparing to is a Matrix
			return false;
		Matrix m = (Matrix)o; // if the above was not true, we know it's safe to treat 'o' as a Matrix
		
		//Check dimensions
		if(this.numRows != m.numRows || this.numColumns != m.numColumns)
			return false;
		
		//Compare data
		for(int r = 0; r < this.numRows; r++)
			for(int c = 0; c < this.numColumns; c++)
				//If at least one of the elements is not equal, the matrices are not equal
				if(this.data[r][c] != m.data[r][c])
					return false;
		
		//Otherwise, no possible differences exist;
		//they are the same.
		return true;
	}