Bacharel
Quando métodos possuem o mesmo nome, mas, assinaturas diferentes dizemos que há sobrecarga de métodos. Isto facilita a definição de métodos em grandes projetos.
public class Area { public static float calcArea(float x){ //métodos de classe return x*x;
}
public static float calcArea(float x, float y){ return x*y;
}
public static float calcArea(float x,float y,float z){ return x*y*z;
}
public static void main(String[] args) {
System.out.println("Área do quadrado:"+calcArea(3.4f));
System.out.println("Área do retângulo:"+calcArea(4.6f,6.5f));
System.out.println("Área do cubo:"+calcArea(6.1f,1.5f,9.9f));
}
}
Visibilidade
public (+) - Acessível a todas as classes. private (-) - Acessível apenas na classe de origem. protected (#) - Acessível às classes do mesmo pacote e às subclasses. default - Acessível somente para as classes do mesmo pacote.
Exercício prático
1 - Crie um projeto denominado Visibilidade
2 - Crie um pacote teste1
3 - Crie as duas classes a seguir (2 arquivos distintos):
public class Garrafa { public String material,cor;
public float preco;
}
public class UsaGarrafa {
public static void main(String[] args) {
Garrafa g = new Garrafa();
g.cor = "Azul";
g.material = "plástico";
g.preco = 2.30F;
System.out.println("Cor:" + g.cor + "\nMaterial:" + g.material + "\nPreço:" +
g.preco);
}
}
4 - Crie outro pacote teste2, no mesmo projeto e crie outra classe
public class UsaGarrafa2{
public static void main(String[] args) {
Garrafa g = new Garrafa();
g.cor = "Azul";
g.material = "plástico";
g.preco = 2.30F;
System.out.println("Cor:" + g.cor + "\nMaterial:" + g.material + "\nPreço:" +
g.preco);
}
}
Encapsulamento
Altere a visibilidade dos atributos da classe Garrafa, para private.
Veja que a classe UsaGarrafa contém erros. Pois, agora não é possível acessar atributos a partir de outras classes.
Assim, utilizamos os métodos de acesso get e set, que encapsulam os