ae alguem pode tirar uma duvida minha?!
váriavel é o mesmo q atributo?!?!
vlww aee

ae alguem pode tirar uma duvida minha?!
váriavel é o mesmo q atributo?!?!
vlww aee

Você pode ter uma variável de instância, ou atributo, uma variável local e uma variável de classe. O seguinte código mostra os três tipos em operação.
class Teste {
public static int variavel_de_classe;
public int variavel_de_instancia;
public static void main(String[] args) {
int variavel_local;
}
}
aahhhh vlw ae thingol!!

outra duvida…
o compilador consegue diferenciar os construtores sobrecarregados pelo retorno ou soh pela assinatura do método!?!?!
Construtor não pode ser sobrecarregado pelo tipo de retorno porque ele não tem retorno, mesmo void.
Portanto só pode ser sobrecarregado pela assinatura do construtor.
Métodos comuns não podem ser sobrecarregados pelo tipo de retorno, mas podem ser sobrecarregados pela assinatura.
Construtor não pode ser sobrecarregado pelo tipo de retorno porque ele não tem retorno, mesmo void.
Portanto só pode ser sobrecarregado pela assinatura do construtor.Métodos comuns não podem ser sobrecarregados pelo tipo de retorno, mas podem ser sobrecarregados pela assinatura.
Se o nome do método continua o mesmo, mas o tipo de retorno muda, é feito o override (sobrescrever) não é?
certo!
se vc constrói um outro metodo com a mesma assinatura, mudando apenas o retorno do método, vc está fazendo sobreescrita de método.
se vc constrói um método e mexe nos parâmetros de sua assinatura vc está fazendo sobrecarga de método.
Construtor não pode ser sobrecarregado pelo tipo de retorno porque ele não tem retorno, mesmo void. Portanto só pode ser sobrecarregado pela assinatura do construtor.Métodos comuns não podem ser sobrecarregados pelo tipo de retorno, mas podem ser sobrecarregados pela assinatura.
Se o nome do método continua o mesmo, mas o tipo de retorno muda, é feito o override (sobrescrever) não é?
Se você fizer um método com o mesmo nome, mas parâmetros diferentes, então aí dá, independente do tipo do retorno. Mas isso é overloading (sobrecarregamento), e não overriding (sobrescrição).
Se você tentar um sobrescrever o método de uma classe pai com um da classe filha com a mesma assinatura, mas tipos de retorno diferentes, ele também não compila, mas desta vez o erro que dá é que você está tentando sobrescrever um metodo com outro com tipo de retorno incompatível.
Preste atenção nessas palavras que disse acima, retorno incompatível.
Caso você esteja sobrescrevendo o método com um tipo de retorno que é um objeto que descende do tipo de retorno do método na classe pai, aí pode.
exemplo:public class ClassePai
{
public ClassePai método() {return null;}
}
public class ClasseFilha extends ClassePai
{
public ClasseFilha método() {return null;}
}
Construtor não pode ser sobrecarregado pelo tipo de retorno porque ele não tem retorno, mesmo void.
Portanto só pode ser sobrecarregado pela assinatura do construtor.Métodos comuns não podem ser sobrecarregados pelo tipo de retorno, mas podem ser sobrecarregados pela assinatura.
Se o nome do método continua o mesmo, mas o tipo de retorno muda, é feito o override (sobrescrever) não é?
Não, o código não compila. Ele acusa que um método com a mesma assinatura já foi definido antes.Se você fizer um método com o mesmo nome, mas parâmetros diferentes, então aí dá, independente do tipo do retorno. Mas isso é overloading (sobrecarregamento), e não overriding (sobrescrição).
Isso mesmo. Troquei as bolas. Então é o parâmetro que muda e o método continua com o mesmo nome.
Sobrescrever é fazer um método com o mesmo nome de um método que existe na superclasse, mas que faça algo diferente.
Certo?
Editei meu post acima, tem mais info sobre isso.
Sobrescrever é fazer um método com o mesmo nome de um método que existe na superclasse, mas que faça algo diferente.
Certo?