o retorno é mais utlizado para caso você queira retorna o valor para o escope principal e não apenas motras ele em um "escopo" secundário:
Aqui temos a classe secundária:
public class Secundaria {
private String nome;
private Integer anoDeLancamento;
private Double somaDasAvaliacoes;
private Integer totalDeAvaliacoes;
public Secundaria(String nome, Integer anoDeLancamento, Double somaDasAvaliacoes, Integer totalDeAvaliacoes) {]
this.nome = nome;
this.anoDeLancamento = anoDeLancamento;
this.somaDasAvaliacoes = somaDasAvaliacoes;
this.totalDeAvaliacoes = totalDeAvaliacoes;
}
public Secundaria() {
}
public Double getSomaDasAvaliacoes() {
return somaDasAvaliacoes;
}
public void setSomaDasAvaliacoes(Double somaDasAvaliacoes) {
this.somaDasAvaliacoes = somaDasAvaliacoes;
}
public Integer getTotalDeAvaliacoes() {
return totalDeAvaliacoes;
}
public void setTotalDeAvaliacoes(Integer totalDeAvaliacoes) {
this.totalDeAvaliacoes = totalDeAvaliacoes;
}
void avalia(double nota) {
somaDasAvaliacoes += nota;
totalDeAvaliacoes++;
}
double pegaMedia(){
return somaDasAvaliacoes / totalDeAvaliacoes;
}
void exibeFichaTecnica(){
System.out.println("Nome do filme:" + nome);
System.out.println("Ano de lançamento:" + anoDeLancamento);
}
}
que tem os construtores e os métodos.
agora a principal:
public class Principal {
public static void main(String[] args) {
Secundaria secundaria = new Secundaria();
secundaria.setSomaDasAvaliacoes(45.0);
secundaria.setTotalDeAvaliacoes(1);
secundaria.avalia(15);
System.out.println("A soma da avalição é: " + secundaria.getSomaDasAvaliacoes());
System.out.println("O Total de avaliações é: " + secundaria.getTotalDeAvaliacoes());
System.out.println("A média da avaliação é: " + secundaria.pegaMedia());
secundaria.exibeFichaTecnica();
}
}
na principal eu declarei a classe secundaria e setei o valor 45.o na soma das avaliações e 1 no total da avaliação.
aí eu chamei o método "avalia" da classe secundária que é void passando o valor 15 como nota:
secundaria.avalia(15);
que chama esse método:
void avalia(double nota) {
somaDasAvaliacoes += nota;
totalDeAvaliacoes++;
}
aqui ele apenas atualisou os valores, o atributo "somaDasAvaliacoes" que tinha o valor 45 foi atualizado para 60 e o atributo "totalDeAvaliacoes" foi atualizado para 2 acho que até aqui você já tenha entendido.
aí eu pedi para a classe principal mostrar os valores dos atributos / variáveis da classe secundária:
System.out.println("A soma da avalição é: " + secundaria.getSomaDasAvaliacoes());
System.out.println("O Total de avaliações é: " + secundaria.getTotalDeAvaliacoes());
que executa esses métodos na classe secundária:
public Double getSomaDasAvaliacoes() {
return somaDasAvaliacoes;
}
public Integer getTotalDeAvaliacoes() {
return totalDeAvaliacoes;
}
aqui utiliza o return pois eu quero que quando eu executar o método get o valor do atributo / variável da classe secundária passe dela para o princial, que no caso no método void não retornaria.
que no fim executo o comando para imprimir e o método " secundaria.pegaMedia()"
System.out.println("A média da avaliação é: " + secundaria.pegaMedia());
para também retorna o valor da média para o escopo principal.
porem quando eu executo o comando
"secundaria.exibeFichaTecnica()"
que chama o método:
void exibeFichaTecnica(){
System.out.println("Nome do filme:" + nome);
System.out.println("Ano de lançamento:" + anoDeLancamento);
}
eu não quero que o atributo / variavel nome e anoDeLancamento retorne para o escopo principal eu só quero que ele seja executado lá sem que me retorne nada para eu usar no principal, deu para entender?