Estou com uma duvida o void nao retorna nenhum valor ja outra operaçoes como boolean retorna, que valor seria esse que ele não retorna? não estou conseguindo entender qual seria esse valor estou muito confuso. Alguem poderia me da uma explicação melhor sobre esse assunto? se posivel fazer alguma comparações.
“void” quer dizer, em inglês, “vazio”.
Em vez de ter uma palavra-chave diferente para denotar funções que retornam um valor e funções que não retornam nada (como no Pascal, onde são respectivamente “function” e “procedure”), o Java, C++, C#, C e outras linguagens usam a convenção de usar a palavra “void” para os métodos que não retornam nada.
(Em C e C++ o “void” tem outros usos, mas isso não vem ao caso aqui.)
É só isso. Não há nada “mágico”.
tem tb o Objeto java.langVoid, que deve representar o mesmo que o tipo primitivo void…
ja vi usando ao sobrescrever assinatura, para retornar vazio, onde a assinatura pedia um retorno do tipo Object
…
c alguem puder dar um luz melhor sobre o objeto Void ^^
A classe java.lang.Void tem um uso muito reduzido; serve, basicamente, para isso mesmo que o Lavieri mencionou.
class Base {
public Object abc (int xyz) { return xyz; }
}
class Subclasse extends Base {
@Override
public Void abc (int xyz) { System.out.println ("abc"); return null; }
}
class TesteJavaLangVoid {
public static void main(String[] args) throws Exception {
(new Subclasse()).abc (10);
}
}
nao consegui entender ainda :S talves teria que me da uma explicação melhor ainda, talvez fazendo uma comparação com um objeto do mundo real. e pega leva nas explicações pq estou comesando agora e pode ser bastante confuso pramin agora entender.
é que assim… um método é um ação… existem ações que retornam um resultado a quem pediu para ação ser feita, e acções que não retornam um resultado a quem pediu a ação…
por exemplo…
public double calcularMedia(int[] notas);
esse método tem um retorno Double pois ele calcula uma média e retorna o valor da média,
porem existem métodos que não tem retorno, pois eles executam uma ação, porem não existe um resultado a retornar, por exemplo…
public void imprimeMedia(double media);
este segundo método simplismente imprime o resultado, e não retorna nada, ou seja, seu retorno é vazio…
vc pode usar + ou - assim
[code]
int[] notas = {10,7,9,9,9,8};
double media = calcularMedia(notas);
imprimeMedia(media); //aqui como imprime média não ter resultado não da pra fazer variavel = imprimeMedia(media)[/code]
Então um metodo void não retorna um valor imagine que voce quer apenas cadastrar uma pessoa voce pode fazer isso utilizando void:
public void cadastrar(Pessoa pessoa)
{
//logica
}
e quando for utilizar isso voce faz assim:
obj.cadastrar(new Pessoa("Rodrigo"));
ou voce pode querer saber como foi o cadastro se ocorreu algum erro ou alguma coisa ai você pode retornar um boolean:
public boolean cadastrar(Pessoa pessoa)
{
//logica
}
e quando for utilizar isso voce faz assim:
boolean foi = obj.cadastrar(new Pessoa("Rodrigo"));
if (foi)
{
//deu tudo certo
}
else
{
//alguma coisa deu errado!
}
FLW ^^
OK.
A sintaxe do Java, C, C++, C# é bem parecida.
Ela requer que você ponha, para declarar um método:
- A palavra que indica o acesso (public, private, protected). Essa palavra é opcional.
- O tipo do retorno. Essa palavra não é opcional. Por exemplo: int, long, String
- O nome do método. Isso também não é opcional. Por exemplo: processarRegistros
- Um parêntese “(”.
- Se houver parâmetros, os tipos e nomes dos parâmetros.
- Um parêntese “)”.
Isso é simplesmente uma definição: no Cobol a convenção é outra, no VB a convenção é outra, e no Pascal (Delphi) é ainda outra.
Como foi estipulado que o tipo de retorno não é opcional, ele deve sempre ser especificado.
Acontece que nem sempre um método retorna alguma coisa.
Por exemplo: você pode ter um método “fazerCoisaNenhuma” que simplesmente não retorna nada para você.
Então foi convencionado que, para esse caso em que o método não retorna nada, o tipo do retorno é “void”, ou seja, não há retorno.
Veja que “void” é só uma convenção - quer dizer: “este método não retorna nada”.
Pra ser bem sincero não deu pra entender legal ainda nao tá, ta um pouco embaçado, tavez seria melhor uma explicação melhor isso é se existe né rsrs se alguem poder me da essa explicação mais clara, é oque eu estava falando, se fizer alguma comparação tenho mais facilidade em aprender e entender comparando assim com alguma coisa do mundo real.
OBRIGADO.
Tá bom, vou explicar com uma história.
Você telefona para o vendedor de carros e fala assim:
- Quando você tiver um carro bom para mim que custe no máximo 20.000,00 , me telefona e me dá um retorno.
Isso é equivalente a:
class Vendedor {
Carro venderCarroBom (double preco) {
return new Gol();
}
}
O vendedor tem um método “venderCarroBom” que aceita um preço e retorna um Carro.
Você agora tenta telefonar para a sua operadora de telefonia celular e tenta cancelar seu plano. Você fica duas horas pendurado no telefone e eles não resolvem seu problema. Então a atendente lhe diz, só para você ficar menos bravo:
- Se o supervisor conseguir resolver seu problema, lhe retorno.
Obviamente ela nunca vai lhe retornar - você tem o equivalente a:
class CallCenter {
void resolverProblema () {
System.out.println ("Ha ha ha");
}
}
Ou seja, a moça do Call Center da operadora tem um método “resolverProblema” que não retorna p*** nenhuma, portanto é declarado como “void”.
Um método String, int, double, etc tem que, por definição, retornar um valor.
Caso você precise calcular uma fórmula, por exemplo, e você não quer deixar no seu método principal, você usa um método pra fazer o cálculo e pra retornar o valor, certo?
Mas se por exemplo você quiser só inserir algo no banco de dados (como o colega acima disse), mas não quiser colocar esse código de inserção no seu método principal (o que seria estéticamente certo), você faria um método pra isso.
E esse método seria o void.
Entende?
Você não é obrigado a criar um método pra inserção, mas também ficaria horrível uma inserção no seu método principal, concorda?
Levando em consideração que vc não quer deixar se código feio e quer faze-lo estéticamente correto, você deve criar um método só pra inserção.
Já que serve só pra isso, já que o método não precisa retornar nada pra você continuar o código, só vai inserir, você usa o método void.
[quote=thingol]Tá bom, vou explicar com uma história.
Você telefona para o vendedor de carros e fala assim:
- Quando você tiver um carro bom para mim que custe no máximo 20.000,00 , me telefona e me dá um retorno.
Isso é equivalente a:
class Vendedor {
Carro venderCarroBom (double preco) {
return new Gol();
}
}
O vendedor tem um método “venderCarroBom” que aceita um preço e retorna um Carro.
Você agora tenta telefonar para a sua operadora de telefonia celular e tenta cancelar seu plano. Você fica duas horas pendurado no telefone e eles não resolvem seu problema. Então a atendente lhe diz, só para você ficar menos bravo:
- Se o supervisor conseguir resolver seu problema, lhe retorno.
Obviamente ela nunca vai lhe retornar - você tem o equivalente a:
class CallCenter {
void resolverProblema () {
System.out.println ("Ha ha ha");
}
}
Ou seja, a moça do Call Center da operadora tem um método “resolverProblema” que não retorna p*** nenhuma, portanto é declarado como “void”.
[/quote]
:lol: :lol:
Que exemplo fantástico! Mais realista que esse é difícil.
AUHuhaauhuha
muito bom esse exemplo do Thingol
Melhor exemplo que vi sobre este assunto…
Muito boa…
Belo exemplo :lol:
Muito bom o exemplo, parabéns…
Concordo que foi um excelente exemplo, bastante inteligente, mas pra quem já conhece o conceito. Não foi muito didático. Foi como uma piada, só ri quem entende do assunto tratado na mesma.
Não estou querendo ser maldoso, aliás, acho que o próprio thingol há de concordar comigo. Ele tá ganhando em originalidade, mas o Lavieri tá ganhando em didática. É claro que ninguém melhor que o autor do tópico pra fazer o julgamento.
leandro-maanaim, tenta explicar com suas próprias palavras o que você conseguiu “pegar” do conceito até agora. Talvez, partindo da sua linha de raciocínio fique mais fácil de saber como explicar pra você entender.
hAUhAU… que excelente.
Esse tópico virou um joguinho pra aumentar pontos, não virou não?
Concordo sim.
Vou me justificar - é que tinha visto que o Leandro não tinha entendido nem com a explicação do Lavieri, então eu dei o exemplo “piada” mesmo. É que quando as pessoas estão meio dormindo uma piada ajuda a acordar.