Sou programador Java iniciante e estou com uma grande dúvida, qual é a diferença entre o uso de “inner classes” isto é declarar uma classe dentro de outra classe e a utilização da herança com “extends”?
Quando eu uso uma e a outra?
Tenho um sistema que estou desenvolvendo e gostaria de saber, existem módulos comercial financeiro e contábil. Vendas faz parte de comercial, Contas a Pagar faz parte de financeiro e patrimônio faz parte de contábil. Qual seria a forma ideal para declarar estas classes?
Como vc é iniciante, sujiro ler a parte de artigos e tutoriais aqui do GUJ que é otima.
Agora vamos a inner class:
São classes internas (isso o nome ja diz né) declaradas dentro de outras class e até mesmo metodos. Uma classe interna pode e tem acesso a todos os membros da class mais aninhada (class externa), normalmente utilizadas para desenvolver logicas complexas onde seria necessario mais de uma classe para execução.
Diferença entre inner e extends.
extends é a funcionalidade de orientação a objetos. É chamado de herança naõ só em java como tbm em outras linguagens orientadas. Extends serve para a classe que extender herdar todos os metodos VISIVEIS da classe PAI. Vc pode ter varias classes extendidas de PESSOA por exemplo. Mais uma classe interna (inner class) é somente daquela classe, podendo claro outras classes a instanciarem exemplo
[code]Pessoa a = new Pessoa.PessoaFisica();[/code]