I know that variable scope is enclosed by a start of block { and an end of block }. If the same variable is declared within the block, then the compile
Because that's the way Java was designed. The language designers could easily have made it so that it was impossible to use the same name for a local variable and an instance variable. They simply chose not to.