Duvida pertinente....a respeito de extends

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