Notas de conhecimento básico de Java 5

palavra-chave final

Visão geral

A palavra-chave final significa final e imutável.

Quatro usos comuns

1. Usado para modificar uma classe.

2. Usado para modificar um método.

3. Usado para modificar uma variável local.

4. Usado para modificar uma variável de membro.

Usado para modificar uma classe

formato:

public final class 类名称{
    
    

		//内容

}

Significado: a classe atual não pode ter subclasses. (Eunucos)

Nota: Se uma classe for final, todos os métodos de membro não podem ser substituídos. (Porque não há filho)

Usado para modificar um método

Quando a palavra-chave final é usada para modificar um método, o método é o método final, ou seja, não pode ser substituído.

formato:

修饰符  final  返回值类型  方法名称(参数列表){
    
    

//		内容

}

Nota: Para classes e métodos, palavras-chave abstratas e palavras-chave finais não podem ser usadas ao mesmo tempo devido a contradições. (Obviamente)

Usado para modificar uma variável local

Depois que final é usado para modificar uma variável local, essa variável não pode ser alterada.

Atribua um valor uma vez e permaneça inalterado por toda a vida.

Para tipos básicos, imutabilidade significa que os dados na variável não podem ser alterados.

Para tipos de referência, imutabilidade significa que o valor do endereço na variável não pode ser alterado.

public class FinalTest {
    
    
    public static void main(String[] args) {
    
    
        int num1 = 10;
        System.out.println(num1);

        num1 = 20;
        System.out.println(num1);

        final int num2 = 100;
        System.out.println(num2);

//        num2 = 200;   错误,无法再次赋值。

        Student stu1 = new Student("大帅");
        System.out.println(stu1);

        Student stu2 = new Student("二帅");
        System.out.println(stu2);

        final Student stu3 = new Student("三帅");
        System.out.println(stu3.getName());

//        stu3  = new Student("小帅");  错误报错,stu3地址不可再改变。
        stu3.setName("小帅");
        System.out.println(stu3.getName());//这个就可以,因为是在引用类型的地址上进行重新赋值,地址并未改变,
    }
}

Usado para modificar uma variável de membro

Para variáveis ​​de membro, se você usar a palavra-chave final, então esta variável ainda é imutável,

1. Como as variáveis ​​de membro têm valores padrão, elas devem ser atribuídas manualmente após serem usadas para o final, e os valores padrão não serão mais fornecidos.

2. Para variáveis ​​de membro final, use atribuição direta ou atribuição por meio de métodos de construção. Escolha um dos dois.

3. Deve ser garantido que todos os métodos de construção sobrecarregados na classe irão eventualmente atribuir variáveis ​​de membros finais.

Modificador de permissão

Existem quatro modificadores de permissão em Java

público protegido (padrão) privado
A mesma classe (eu) SIM SIM SIM SIM
O mesmo pacote (eu moro) SIM SIM SIM NÃO
Diferentes tipos de pãezinhos (meu filho) SIM SIM NÃO NÃO
Pacotes diferentes não são subcategorias (estranhos) SIM NÃO NÃO NÃO

Nota: (padrão) não é a palavra-chave "padrão", mas não é escrita.

Classe interna

Visão geral

Se uma transação contém outra transação, então esta é uma classe que contém outra classe.

Por exemplo: a relação entre o corpo e o coração, outro exemplo: a relação entre o carro e o motor.

classificação:

1. Classe interna do membro

2. Classes internas locais (incluindo classes internas anônimas)

Classe interna do membro

Definir o formato

修饰符 class 外部类名称 {
    
    
	修饰符 class 内部类名称{
    
    
        //内容
	}
}

Entre eles, o uso interno e o uso externo podem ser acessados ​​à vontade, o uso externo e o uso interno requerem objetos internos.

Ou seja, a classe interna pode acessar diretamente os membros da classe externa, incluindo membros privados; se a
classe externa deseja acessar os membros da classe interna, um objeto da classe interna deve ser estabelecido.

Usar classe interna de membro

1. Método indireto: Nos métodos externos e internos, a classe interna é usada, e então o método principal apenas chama a classe externa.

2. Método direto: nome da classe externa. Nome da classe interna nome do objeto = novo nome da classe externa (). Novo nome da classe interna ();

Acesso variável com o mesmo nome da classe interna do membro

public class Body {
    
    
    int num = 10;
    public class Heart{
    
    
        int num = 20;
        public void dongdong(){
    
    
            int num = 30;
            System.out.println(Body.this.num);
            System.out.println(this.num);
            System.out.println(num);
        }
    }
}

Classe interna local

Se uma classe é definida dentro de um método, então esta é uma classe interna local.

"Parcial": apenas o método atual pode usá-lo, e não pode ser usado fora deste método.

Definir o formato

修饰符  class  外部类名称{
    
    

		修饰符  返回值类型  外部类方法名称(参数列表){
    
    

				class  局部内部类名称{
    
    

						//内容

				}

		}

}

Variáveis ​​locais de classes internas locais

Classe interna local, se você deseja acessar a variável local do método, a variável local deve ser [final efetivo].

Observações: A partir do Java 8+, contanto que os fatos da variável local permaneçam inalterados, a palavra-chave final pode ser omitida.

o motivo:

1. O novo objeto está na memória heap.

2. As variáveis ​​locais seguem o método e estão na memória da pilha.

3. A pilha será exibida imediatamente após a execução do método e as variáveis ​​locais desaparecerão imediatamente.

4. Mas o novo objeto continuará a existir na memória heap até que a coleta de lixo desapareça.

5. Se o objeto ainda está vivo e deseja continuar a usar variáveis ​​locais, porque as variáveis ​​locais anteriores desapareceram, se você quiser usá-las, você pode obter o valor das variáveis ​​locais anteriores no pool constante, então você precisa modificar as variáveis ​​com a palavra-chave final para fazer Não pode ser reatribuído e o valor original sempre pode ser salvo.

Modificador de permissão de resumo

público> protegido> (padrão)> privado

Ao definir uma classe, as regras do modificador de permissão:

1. Classe externa: pública / (padrão)

2. Classe interna do membro: pública / protegida / (padrão) / privada

3. Classe interna local: nada pode ser escrito (diferente do padrão)

Classe interna anônima (ênfase)

Visão geral

Se a classe de implementação da interface (ou uma subclasse da classe pai) precisa ser usada apenas uma vez,

Nesse caso, você pode omitir a definição da classe e usar [classe interna anônima].

O formato de definição da classe interna anônima:

Nome da interface nome do objeto = novo nome da interface () {

// Sobrescrever e reescrever todos os métodos abstratos

};

Análise

Analise o formato "nome da nova interface () {}":

1.new representa a ação de criar um objeto

2. O nome da interface é a interface que a classe interna anônima precisa implementar

3. {...} Este é o conteúdo da classe interna anônima

Nota

  1. Uma classe interna anônima pode ser usada apenas uma vez ao criar um objeto. Se você quiser usá-lo várias vezes e o conteúdo da classe for o mesmo, você deve usar uma classe de implementação definida separadamente.
  2. Objetos anônimos só podem ser chamados uma vez em [método de chamada]. Se quiser chamar vários métodos no mesmo objeto, você deve dar um nome ao objeto.
  3. As classes internas anônimas omitem [nome da classe / subclasse de implementação], mas os objetos anônimos omitem [nome do objeto]. Classes internas anônimas e objetos anônimos não são a mesma coisa. (Basicamente, nenhum problema de compreensão)

Classe como tipo de variável de membro

Veja Sum.Demo01

Interface como um tipo de variável de membro

Veja Sum.Demo02

Interface como parâmetro de método ou valor de retorno

public class demo {
    
    

    public static void main(String[] args) {
    
    
        List<String> list = new ArrayList<>();//左边是接口名称,右边是类名称,这就是多态写法
        demo.addList(list);
        System.out.println(list);
    }

    public static List<String> addList(List<String> list){
    
    
        list.add("你好");
        list.add("你好啊");
        list.add("你好啊啊");
        list.add("你好啊啊啊");

        return list;
    }
}

Acho que você gosta

Origin blog.csdn.net/weixin_43215322/article/details/108701459
Recomendado
Clasificación