váriavel e atributo

9 respostas
Alexandre_Laranja

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

vlww aee
:smiley:

9 Respostas

T

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;
    }
}
Alexandre_Laranja

aahhhh vlw ae thingol!!
:wink:

Alexandre_Laranja

outra duvida…

o compilador consegue diferenciar os construtores sobrecarregados pelo retorno ou soh pela assinatura do método!?!?!

T

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.

Andre_Brito

thingol:
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 é?

Alexandre_Laranja

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.

B
Andre Brito:
thingol:
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).

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;}
}
Além de compilar, é um dos princípios que tornam possível o polimorfismo.
Andre_Brito

Bruno Laturner:
Andre Brito:
thingol:
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?

B

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?

Certo. Mesma assinatura p/ ser mais exato.

Criado 19 de junho de 2008
Ultima resposta 19 de jun. de 2008
Respostas 9
Participantes 4