[Coluna JavaSE 65] O uso de classes internas, classes definidas dentro de outras classes

Página inicial do autor : Designer Xiao Zheng
Breve introdução do autor : 3 anos de experiência em desenvolvimento JAVA full-stack, com foco em tecnologia JAVA, personalização de sistema, orientação remota, dedicado à transformação digital corporativa, professor certificado do CSDN College e Blue Bridge Cloud Course.
Direção principal : Vue, SpringBoot, miniaplicativo WeChat

Este artigo explica o conceito e a sintaxe das classes internas em Java e fornece exemplos de códigos. Uma classe interna é uma classe definida dentro de outra classe. A classe interna pode acessar os membros da classe externa e pode desempenhar o papel de esconder e encapsular.

insira a descrição da imagem aqui


1. O que é uma classe interna

Classes internas em Java são classes definidas dentro de outras classes .

A classe interna pode acessar os membros da classe externa (incluindo membros privados) e pode desempenhar o papel de esconder e encapsular.

A seguir está um código de amostra de uma classe interna Java simples, copie e execute-o localmente.

public class OuterClass {
    
    
    private int outerVariable = 10;

    public void outerMethod() {
    
    
        InnerClass innerObj = new InnerClass();
        innerObj.innerMethod();
    }

    public class InnerClass {
    
    
        private int innerVariable = 5;

        public void innerMethod() {
    
    
            System.out.println("Inner Variable: " + innerVariable);
            System.out.println("Outer Variable: " + outerVariable);
        }
    }

    public static void main(String[] args) {
    
    
        OuterClass outerObj = new OuterClass();
        outerObj.outerMethod();
    }
}

Neste exemplo, OuterClassuma classe interna é incluída InnerClass.

InnerClassOuterClassAs variáveis ​​de membro da classe externa podem ser acessadas diretamente outerVariablee os métodos podem ser chamados OuterClasscriando uma instância de .InnerClassinnerMethod()

No main()método, criamos um OuterClassobjeto e chamamos outerMethod()o método, que por sua vez cria um InnerClassobjeto e chama innerMethod()o método. No innerMethod()método, imprimimos as variáveis ​​de membro da classe interna innerVariablee as variáveis ​​de membro da classe externa outerVariable.

Este exemplo mostra como classes internas podem acessar membros de classes externas e como criar e usar instâncias de classes internas.

A classe interna é dividida nos seguintes 4 44 tipos, por favor estude cuidadosamente.

  1. Classe interna do membro : definida dentro da classe e tem o mesmo nível de membro da classe externa. Os membros de uma classe interna podem acessar todos os membros da classe externa, incluindo membros privados. Ao criar uma instância da classe interna de um membro, uma instância da classe externa deve ser criada primeiro.
  2. Classe interna estática : staticA classe interna decorada com palavras-chave não tem nada a ver com a instância da classe externa e pode ser acessada diretamente pela classe externa. Uma classe interna estática não pode acessar membros não estáticos da classe externa, apenas membros estáticos da classe externa.
  3. Classe interna do método : Uma classe definida dentro de um método só pode ser usada dentro do escopo do método. A classe interna do método pode acessar os membros da classe externa (incluindo parâmetros de método e variáveis ​​locais), mas só pode acessar as finalvariáveis ​​locais modificadas.
  4. Classe interna anônima : Uma classe interna sem nome, usada para criar uma classe que só precisa ser usada uma vez. Classes internas anônimas geralmente são usadas ao criar objetos de interface ou herdar classes pai.

As características da classe interna incluem as seguintes 4 4Às 4 horas, por favor, estude bastante.

  • Classes internas podem acessar membros de classes externas , incluindo membros privados.
  • Uma classe interna pode estar oculta em uma classe externa e não ser visível para outras classes da classe externa.
  • Classes internas podem implementar herança múltipla e uma classe pode herdar várias classes internas ao mesmo tempo.
  • Classes internas podem acessar instâncias de classes externas , incluindo variáveis ​​de instância e métodos de instância.

Os cenários de uso de classes internas incluem os seguintes 3 3Às 3 horas, por favor, estude bastante.

  • Encapsulamento : torne a classe interna privada para uso somente pela classe externa.
  • Organização de código : organize classes relacionadas juntas para melhorar a legibilidade e a manutenção do código.
  • Mecanismo de retorno de chamada : classes internas podem implementar interfaces ou herdar classes abstratas para a implementação de métodos de retorno de chamada.

Resumindo, uma classe interna é uma classe especial que pode acessar membros de uma classe externa e é usada para implementar funções como encapsulamento, organização de código e retornos de chamada.

insira a descrição da imagem aqui


2. Qual é a diferença entre classe interna e classe comum

Classes internas e classes comuns em Java têm o seguinte 6 6Existem 6 diferenças, por favor, estude com cuidado.

  1. Direitos de acesso : classes internas podem acessar membros privados de classes externas, enquanto classes comuns não podem acessar diretamente membros privados de classes externas. Isso ocorre porque a classe interna é membro da classe externa e pode desfrutar de todos os direitos de acesso dos membros da classe externa.
  2. Associação : existe uma associação entre a classe interna e a classe externa, e a classe interna pode acessar membros da classe externa, incluindo métodos e variáveis ​​de instância. Não existe tal associação especial entre as classes comuns.
  3. Método de criação : A instância da classe interna deve depender da instância da classe externa. Você precisa primeiro criar uma instância da classe externa e depois criar uma instância da classe interna. Classes comuns podem newcriar instâncias diretamente por meio de palavras-chave.
  4. Tipo : As classes internas podem ser divididas em classes internas de membro, classes internas estáticas, classes internas de método e classes internas anônimas. Considerando que uma classe normal tem apenas um tipo.
  5. Ocultação : as classes internas podem ser ocultadas nas classes externas e não são visíveis para outras classes nas classes externas. As classes comuns não possuem esse tipo de ocultação e são visíveis para outras classes fora da classe.
  6. Cenários de uso : As classes internas geralmente são usadas para cenários de requisitos especiais, como encapsulamento, organização de código e implementação de mecanismos de retorno de chamada. Classes comuns são mais adequadas para programação geral orientada a objetos.

Resumindo, as diferenças entre classes internas e classes comuns são refletidas principalmente em direitos de acesso, associações, métodos de criação, tipos, ocultação e cenários de uso. Os alunos podem escolher tipos de classe apropriados para implementar funções de acordo com necessidades específicas.

insira a descrição da imagem aqui


3. Cenários de aplicação de classes internas

As classes internas têm muitos cenários de aplicativos em Java, os seguintes são alguns comuns 6 66 cenários de aplicação.

  1. Implemente o mecanismo de retorno de chamada : a classe interna pode implementar a interface ou herdar a classe abstrata para a implementação do método de retorno de chamada. A implementação do mecanismo de callback por meio da classe interna pode simplificar a escrita do código, tornando-o mais claro e de fácil manutenção.
  2. Encapsulamento e ocultação : as classes internas podem ser modificadas de forma privada, ocultas nas classes externas e acessíveis apenas dentro da classe externa. Isso permite o encapsulamento e evita que classes diferentes da classe externa acessem diretamente a classe interna.
  3. Otimize a estrutura do código : classes internas podem organizar classes relacionadas juntas para melhorar a legibilidade e a manutenção do código. Ao definir a classe interna onde ela precisa ser usada, o número de classes pode ser reduzido e a estrutura do código pode ser simplificada.
  4. Realizar herança múltipla : classes internas podem realizar herança múltipla e uma classe pode herdar várias classes internas ao mesmo tempo. Isso pode evitar a restrição de que Java não suporta herança múltipla e realizar relacionamentos de classe mais flexíveis.
  5. Acesso aos membros privados da classe externa : A classe interna pode acessar os membros privados da classe externa, incluindo variáveis ​​privadas e métodos privados. Dessa forma, o acesso e a operação dos membros privados da classe externa podem ser realizados e a função da classe interna é aprimorada.
  6. Classe interna anônima : Uma classe interna pode ser usada para criar uma classe que só precisa ser usada uma vez, ou seja, uma classe interna anônima. Por meio da classe interna anônima, você pode definir rapidamente a lógica de implementação relevante e simplificar o código ao criar um objeto de interface ou herdar uma classe pai.

insira a descrição da imagem aqui


4. Perguntas da entrevista de classe interna

  1. Quais são os tipos de classes internas em Java? Descreva as diferenças e os cenários de uso entre eles, respectivamente.
  2. Uma classe interna pode acessar membros privados de uma classe externa? Por que?
  3. Como posso criar uma instância de uma classe interna em algum lugar diferente da classe externa?
  4. Qual é a diferença entre uma classe interna estática e uma classe interna não estática?
  5. Por que uma classe interna anônima pode acessar as variáveis ​​locais da classe externa sem declará-la final?
  6. Como acessar variáveis ​​de membro e métodos de classe interna estática e classe interna não estática?
  7. Uma classe interna pode ter sua própria classe interna?
  8. Qual é o escopo das classes internas?
  9. Como criar instância de classe interna na classe externa?
  10. Quais são as semelhanças e diferenças entre classes internas e relacionamentos de herança?

V. Resumo

Este artigo explica o conceito e a sintaxe das classes internas em Java e fornece exemplos de códigos.No próximo blog, explicarei os instanceofpontos de conhecimento das palavras-chave Java e da conversão de tipos de dados.

insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_41464123/article/details/132075408
Recomendado
Clasificación