E ae gente blz ? Eu programo java em algum tempo… mas nunca parei para pensar em uma coisa (a respeito de TEORIA).
Quando eu tenho duas classes separadas … ex:
public class Pessoa {
...
}
public class Teste{
public static void main (String []args)
{
Pessoa p = new Pessoa(); // POR QUE EU POSSO FAZER ISSO, SENDO QUE SAO CLASSES DIFERENTES E NAO ESTOU HERDANDO ???
}
}
Minha duvida é esta acima. Pq os 2 estao em arquivos separados… mesmo pack MAS arquivos .java separados. Podem me explicar por favor ???
Vlw galera!
se você chamar, da forma como você chamou aí a classe Pessoa, ele vai assumir que esteja na mesma pasta, porém ele não vai herdar nem nada, você só criou uma referência para a Pessoa ao fazer
Pessoa p = new Pessoa;
vamos supor que você tenha essas classes no pacote br.com.diego.testes;
ao criar a classe Teste.java, o nome real dela é br.com.diego.teste.teste.java, assim como vai ser a Pessoa, br.com.diego.testes.Pessoa.java, nada mais foi assumido que a classe estava no mesmo pacote.
para uma classe herdar a outra, ou seja, você dizer que uma classe é uma ou pertence a uma outra, você terá que usar polimorfismo ou herança.
Bom dia Diego.
Já imaginou se voce aninhasse todas as classes do seu projeto em um arquivo só.
A vias de regra todo arquivo .java é considerado como se fosse unidade de classe em si, o mesmo acontecendo com a linguagem Pascal do Delphi que tem Unit como a unidade de classe que é armazenada em arquivo ".pas".
Quando voce aninha classes, o compilador Javac gera um arquivo deste tipo; suponhamos que a classe Pessoa do seu exemplo esteja dentro da classe Teste:
Teste$Pessoa.java
Para executar a classe Pessoa, voce tem que instanciar a classe Teste visto que ela é considerada um membro da classe Teste, assim sendo, toda classe aninhada deve ser declarada dentro do bloco da classe externa (classe que a contém), se voce declarar várias classes fora do bloco da classe externa, o compilador gerará erro.
Dê uma olhada neste Link que explica melhor:
http://www.jspbrasil.com.br/mostrar/70