Classes internas e anormais de desenvolvimento e aprendizagem de programas Java

(Livro de referência de estudo: tutorial prático Java2 quinta edição)

Um, classe interna

Java suporta a definição de uma classe em outra classe, tal classe é chamada de classe interna e a classe contida na classe interna é chamada de classe externa da classe interna. A relação entre a classe interna e a classe incorporada externa é a seguinte:

  • As variáveis ​​de membro da classe externa ainda são válidas na classe interna e os métodos da classe interna também podem chamar os métodos da classe externa
  • Variáveis ​​de classe e métodos de classe (estáticos) não podem ser declarados no corpo de uma classe interna. A classe externa pode usar a classe interna para declarar o objeto como um membro da classe externa
  • A classe interna é usada apenas por sua classe externa, outras classes não podem usar a classe interna de uma determinada classe para declarar objetos

O arquivo bytecode da classe interna gerada pelo compilador Java é diferente da classe usual (nome da classe.classe), mas o nome da classe externa $ nome da classe interna.classe
tem e apenas as classes internas podem ser modificadas como classes estáticas, e o programa pode usar a classe interna estática para criar objetos em outras classes. Classes internas estáticas não podem manipular variáveis ​​de membro de instância de classes externas incorporadas.

Dois, classe anônima

Java permite que você crie um objeto de subclasse diretamente usando o corpo da classe de uma subclasse de uma classe. Isso significa que, além do método de construção da classe pai, também existem corpos de classe que podem criar objetos de subclasse. Este corpo de classe é considerado uma subclasse sem declarações de classe e é chamado de classe anônima. Uma classe anônima é uma subclasse . Como nenhum nome está disponível, é impossível declarar um objeto usando uma classe anônima, mas um objeto pode ser criado diretamente. O seguinte é criar um objeto com uma classe anônima:

new 父类名() {
    
    
	匿名类的类体
};

O objeto criado pela classe anônima só pode ser usado como o objeto de transformação superior como um parâmetro de método para simplificar o código.

(1) Recursos de classes anônimas

  • Uma classe anônima pode herdar os métodos da classe pai ou substituir os métodos da classe pai.
  • Quando uma classe anônima é usada, ela deve ser usada diretamente para criar um objeto em uma determinada classe, portanto, a classe anônima deve ser uma classe interna.
  • Classes anônimas podem acessar variáveis ​​de membro e métodos em classes externas, e variáveis ​​de membro estático e métodos não podem ser declarados no corpo de classe de classes anônimas.
  • Visto que a classe anônima é uma subclasse, mas não há nome de classe, quando você cria um objeto com a classe anônima, você deve usar diretamente o método de construção da classe pai.

(2) O papel das classes anônimas Se os
usuários desejam passar parâmetros de subclasse para o método, eles podem criar objetos de classe anônima diretamente na lista de parâmetros do método.

(3) Classes anônimas relacionadas a interfaces
Java também permite criar um objeto anônimo diretamente com o nome da interface e um corpo de classe. Este corpo da classe é considerado o corpo da classe que implementa a interface sem a declaração da classe. O corpo da classe deve substituir todos os métodos na interface. do seguinte modo:

new 接口名() {
    
    
	实现接口的匿名类的类体
};

Três, classe anormal

Java usa throw关键字objetos que lançam uma subclasse Exception para indicar que ocorreu uma exceção.

(1) Instrução try-catch
Java usa a instrução try-catch para lidar com exceções e coloca possíveis operações anormais na parte try da instrução try-catch. Uma vez que try lança um objeto de exceção ou chama um método que pode lançar um objeto de exceção ( E o método lança um objeto de exceção), então a parte try irá parar imediatamente a execução (fora do bloco try) , e então executar a parte catch. Um try-catch pode consistir em várias capturas.

try {
    
    
	可能发生异常的语句
}
catch(ExceptionSubClass1 e) {
    
    
	...
}
catch(ExceptionSubClass2 e) {
    
    
	...
}

(2) Classe de exceção personalizada
Ao escrever um programa, você pode estender a classe Exception (classe de exceção do sistema) para definir sua própria classe de exceção e, em seguida, especificar quais métodos gerar essas exceções de acordo com as necessidades do programa. Quando um método é declarado, você pode usar throws关键字várias exceções a serem geradas pela declaração (a declaração do método lança o nome da classe de exceção personalizada) e especificar a operação que gera a exceção no corpo do método do método, ou seja, criar um objeto com a classe de exceção correspondente. E use a palavra-chave throw para lançar o objeto de exceção, fazendo com que o método termine a execução. O programa deve chamar o método da exceção possível no bloco de instrução try-catch, em que a função de catch é capturar o objeto de exceção lançado pela palavra-chave throw.

throw:用在方法体中表示抛出异常
throws:用在自定义异常方法声明时表示这个方法会抛出异常。

Quatro, afirmação

As declarações de asserção são muito eficazes na fase de depuração do código e geralmente são usadas para erros que o programa não está preparado para tratar capturando exceções.

(1) Formato da sintaxe
Use a palavra-chave assert para declarar uma declaração de asserção. Existem dois formatos:

assert 返回值为boolean类型的表达式;

Se a expressão retornar verdadeiro, o programa continua em execução, caso contrário, o programa pára imediatamente.

assert 返回值为boolean类型的表达式:执行表达式;

Se a expressão do tipo booleano retornar verdadeiro, o programa continuará em execução. Se o valor de retorno for falso, o programa interrompe a execução a partir da asserção e produz o valor da expressão de execução.

(2) Ativar e desativar declarações de afirmação

Ao usar o interpretador Java para executar o aplicativo diretamente, a instrução de asserção é desativada por padrão. Ao depurar o programa, você pode usar -ea para ativar a instrução de asserção:java -ea mainClass

Acho que você gosta

Origin blog.csdn.net/YCF8746/article/details/112999025
Recomendado
Clasificación