Esse
Sempre deve haver algo para representar o objeto atual da classe. Assim como este ponteiro em C ++, a palavra -chave em Java representa a referência ao objeto atual.
Tem três funções principais:
1. Ligue para outros construtores no construtor.
Por exemplo, há uma aula de estudante com três construtores. Se você chamar outro construtor em um determinado construtor, isso () será necessário e não é possível usar o aluno () diretamente.
2. Retorne a referência ao objeto atual.
3 Distinguir entre nomes de variáveis de membro e nomes de parâmetros.
Veja o seguinte exemplo:
Public Class Student {private String Name; private Int Age; Private String College; public student () {idade = 20; } public student (nome da string) {this (); // não pode ser chamado de aluno, use apenas esse () método. this.name = nome; System.out.println ("Este nome do aluno é"+nome); } public student (nome da string, string College) {this (nome); // c ++ você pode chamar diretamente de outros construtores this.college = College; System.out.println ("Este nome do aluno é"+nome+"faculdade é"+faculdade); } public student upgrade () {Age ++; devolver isso; } public void print () {System.out.println ("nome é:"+nome+"idade é:"+idade+"a faculdade é:"+faculdade); } public static void main (string [] args) {Student1 = new Student ("Linc"); Aluno estudante2 = novo aluno ("Linc", "Shenyang College"); student2.Upgrade (). print (); }}Quando você estiver perdido no vasto oceano de objetos, não se esqueça de usar isso para se encontrar.
super
Super é esse pai. Do ponto de vista dos objetos faciais, esses dois conceitos são fáceis de entender.
As subclasses são herdadas da classe pai. As propriedades e métodos protegidos e acima da classe dos pais nascem em casa na subclasse. Então, por que você ainda precisa da palavra -chave Super?
Primeiro, observe a construção da classe pai. Ao construir a subclasse, você deve primeiro chamar o construtor padrão da classe pai, que é consistente com as propriedades de construção do C ++. Quando a classe pai possui vários construtores, você precisa especificar qual deles para ligar. Isso requer super (arg1, arg2 ...).
Deve -se notar que, ao chamar o construtor de classe base no construtor da subclasse, o super deve ser escrito como o primeiro, caso contrário, um erro será relatado.
Segundo, chame esse método da classe pai em alguns métodos que subclassem substituem a classe pai. Como todos sabemos, alguns métodos de substituição de classes de pais em subclasses são uma maneira de orientado o polimorfismo em objetos orientados a objetos e, por vários outros motivos, esse método da classe pai precisa ser chamado neste método para distinguir. Neste momento, o Super precisa ser usado para concluí -lo.
classe pública ClasseLeader estende o aluno {private String dever; public classLeader () {duty = "class Monitor"; } public ClassLeader (String Duty, String Name, String College) {Super (Nome, College); this.duty = dever; } public void print () {super.print (); System.out.println ("Duty Is" + Duty); } public static void main (string [] args) {classe líder líder = new ClassLeader ("Life", "Linc", "Shenyang"); líder.print (); }}Coloque os dois arquivos de classe no mesmo diretório, compilar e executar:
D:/workspace/java/project261/super> java -d. *Java d:/Workspace/java/Project261/super> Java ClassLeader
Resultados em execução:
Este nome do aluno é LINC Este nome do aluno é o Linc College é o nome Shenyang é: Linc Age Is: 20 College Is: Shenyang Duty Is Life
Veja como é tratado em outros idiomas:
C# fornece a palavra -chave base para concluir as funções semelhantes ao super, e o C ++ o chama diretamente com o nome da classe base.