Aburrido JavaEE desde la entrada hasta el abandono (ocho) teclas de método abreviado de uso común de IDEA y método equals () y súper palabra clave

Tabla de contenido

1. Teclas de acceso directo de IDEA y operaciones relacionadas

2. Reescribe la función igual ()

3. Súper palabra clave _ seguimiento del árbol de herencia


Todas las propiedades y métodos, excepto el constructor, se heredan. Sin embargo, no todos se pueden utilizar directamente.

Al imprimir un objeto, si no se llama al método toString (), el método toString () se llamará automáticamente. Retorno: nombre de clase @ dirección de objeto


1. Teclas de acceso directo de IDEA y operaciones relacionadas

1. La vista de estructura de la clase: alt + 7
2. Mira el código fuente de la clase: ctr | + Botón izquierdo
3. Ver la relación de la clase: mouse sobre el nombre de la clase, clic derecho -> Diagrama- -> mostrar diagrama

4. Genere automáticamente constructores, obtenga, establezca métodos, iguales, etc .: alt + insert

5. Configure la solicitud de descripción del documento después de pasar el mouse: Archivo -> Configuración -> Editor -> General ->

2. Reescribe la función igual ()

Código fuente de la función Equals ():

public boolean equals(Object obj) {
        return (this == obj);
}

El siguiente código, sin reescribir equals () antes de la salida es:

false
false
true
true

Código:

import java.util.Objects;

public class Equals {
    int id;
    int age;
    String name;

    //选取时按Ctrl选多个
    public Equals(int id, int age, String name) {
        this.id = id;
        this.age = age;
        this.name = name;
    }

    public static void main(String[] args) {
        Equals e1=new Equals(1,22,"小明");
        Equals e2=new Equals(1,22,"小明");
        //比较对象地址
        System.out.println(e1==e2);
        System.out.println(e1.equals(e2));//通过equals()方法源码可看到equals也是用==比较,即比较对象是否是一个
        System.out.println("123".equals("123"));
        System.out.println("123"=="123");

    }
    //重写equals()函数,右键Generate自动生成,根据id判断是否相等
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        //空对象或者类型不一致
        if (o == null || getClass() != o.getClass()) return false;
        Equals equals = (Equals) o;
        return id == equals.id;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}


La salida después de reescribir equals () es:

false
true
true
true

3. Súper palabra clave _ seguimiento del árbol de herencia

Super "puede considerarse como" es una referencia al objeto principal directo . Puede usar super para acceder a los métodos o atributos en la clase principal que son reemplazados por la subclase.
Use super para llamar a métodos ordinarios, no hay restricción en la posición de la declaración y se puede llamar casualmente en la subclase. Si
esta
es la primera línea de código en el método de construcción sin llamar explícitamente a supe (..) o this (..); entonces Java llamará a super por defecto) lo que significa que llama al método de construcción sin parámetros de la clase principal. El super () se puede omitir aquí.

Codigo 1:

public class TestSuper01 {
    public static void main(String[] args) {
        new ChildClass().f();
    }
}

class FatherClass{
    public int value;
    public void f(){
        value=100;
        System.out.println("FatherClass.value="+value);
    }
}

class ChildClass extends FatherClass{
    public int value;//覆盖一个变量

    public void f(){ //覆盖父类的函数
        super.f();//调用父类的普通方法
        value=200;
        System.out.println("ChildClass.value="+value);
        System.out.println(value);
        System.out.println(super.value);//调用父类的成员变量
    }
}

Producción:

FatherClass.value=100
ChildClass.value=200
200
100

Codigo 2:

public class TestSuper02 {
    public static void main(String[] args) {
        System.out.println("开始创建一个ChildClass对象......");
        new ChildClass2();
    }
}
class FatherClass2{
    public FatherClass2(){
        //这里会先去调用父类即Object类的构造函数,相当于省略了super();
        System.out.println("创建FatherClass2对象");
    }

}

class ChildClass2 extends FatherClass2{
    public ChildClass2(){
        //这里会先去调用父类即FatherClass2的构造函数,相当于省略了super();
        System.out.println("创建ChildClass2对象");
    }

}

Producción:

开始创建一个ChildClass对象......
创建FatherClass2对象
创建ChildClass2对象

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44593822/article/details/115348351
Recomendado
Clasificación