Sobre sua primeira pergunta, é bem simples. Todas classes em Java são filhas de Object e um Object por default é nulo. Sendo assim, se simplesmente declarar uma classe sem instancia-la, você não tem uma referência a um objeto e portanto terá um NullPointerException, a não ser que esteja realizando acesso estático, mas ai é outra conversa. Mas declarar já instanciando, só deve ser feito caso você tenha certeza disso, pois, se há só um método de sua classe que precisa dessa referência, vale mais a pena instanciar somente na chamada, por exemplo.
Em relação a segunda pergunta, a palavra reservada extends indica que a classe em questão será filha de outra. Sem ela, ela somente será filha de Object.
Era essa a dúvida? Pois realmente, a segunda pergunta ficou confusa no meu ponto de vista.
Sobre sua primeira pergunta, é bem simples. Todas classes em Java são filhas de Object e um Object por default é nulo. Sendo assim, se simplesmente declarar uma classe sem instancia-la, você não tem uma referência a um objeto e portanto terá um NullPointerException, a não ser que esteja realizando acesso estático, mas ai é outra conversa. Mas declarar já instanciando, só deve ser feito caso você tenha certeza disso, pois, se há só um método de sua classe que precisa dessa referência, vale mais a pena instanciar somente na chamada, por exemplo.
Em relação a segunda pergunta, a palavra reservada extends indica que a classe em questão será filha de outra. Sem ela, ela somente será filha de Object.
Era essa a dúvida? Pois realmente, a segunda pergunta ficou confusa no meu ponto de vista.[/quote]
Era exatamente isso que eu queria saber, muito obrigado. E obrigado também aos outros que responderam minhas perguntas. Mas a resposta à segunda pergunta me gerou outra dúvida…
Desculpa se a minha forma de expressar é confusa demais… Eu não conheço muitos termos técnicos e às vezes acabo não me expressando direito. Se não entenderem o exemplo posso tentar exemplificar de outra forma. Obrigado novamente!
Sobre sua primeira pergunta, é bem simples. Todas classes em Java são filhas de Object e um Object por default é nulo. Sendo assim, se simplesmente declarar uma classe sem instancia-la, você não tem uma referência a um objeto e portanto terá um NullPointerException, a não ser que esteja realizando acesso estático, mas ai é outra conversa. Mas declarar já instanciando, só deve ser feito caso você tenha certeza disso, pois, se há só um método de sua classe que precisa dessa referência, vale mais a pena instanciar somente na chamada, por exemplo.
Em relação a segunda pergunta, a palavra reservada extends indica que a classe em questão será filha de outra. Sem ela, ela somente será filha de Object.
Era essa a dúvida? Pois realmente, a segunda pergunta ficou confusa no meu ponto de vista.[/quote]
Era exatamente isso que eu queria saber, muito obrigado. E obrigado também aos outros que responderam minhas perguntas. Mas a resposta à segunda pergunta me gerou outra dúvida…
Desculpa se a minha forma de expressar é confusa demais… Eu não conheço muitos termos técnicos e às vezes acabo não me expressando direito. Se não entenderem o exemplo posso tentar exemplificar de outra forma. Obrigado novamente![/quote]
Tente exemplificar em um código que fica mais fácil de visualizarmos sua dúvida. O extends é realizado quando declaramos a Classe e não um objeto que faça parte da classe, não esqueça disso. Você não pode declarar um extends dentro da classe.
Não se pode realizar esse tipo de declaração
Tu pode ter algo como inner class realizando isso mas não na declaração de uma variável.
Isso dará erro de compilação, basta fazer um teste simples e realizar um javac, se usar uma IDE (Eclipse, por exemplo) já vai lhe apontar erro sem que você precise executar a classe (em tempo de compilação). Lê a apostila de Java básico da Caelum (acho que é a FJ-11), vai lhe ser bem útil.
Certo… Muito obrigado, já conhecia essa apostila da Caelum, e já devo inclusive ter lido a respeito, mas não entendi direito… como seria essa declaração? Como eu faria para aluno herdar os atributos de pessoa?
Então você não leu com atenção colega e recomendo a releitura da mesma, fazendo todos os exercícios propostas e com atenção, vai gostar.
Sua pergunta e sua resposta:
[code]public class Aluno extends Pessoa {
}[/code]
Certo ? Dessa forma, tudo o que pertencer a Pessoa e não for privado, será herdado diretamente por Aluno.
Abraços.
Entendi… A confusão (absurda, diga-se de passagem) que eu fiz é que eu estava pensando que o OBJETO herdava, mas é a CLASSE na verdade… Parece bastante estúpido agora kkkkkkk
Muito obrigado, amigo!