Это ключевое слово для базового обнаружения утечек Java.

Что нужно знать заранее

Механизм родительского делегирования

В этой статье предполагается, что вы уже понимаете механизм загрузки классов
, особенно механизм родительского делегирования.
Если вы еще этого не знаете, вы можете щелкнуть ссылку ниже, чтобы посмотреть.

Статья о механизме загрузки классов

Неявный вызов

Мы уже знаем, что в соответствии с механизмом родительского делегирования, когда мы вызываем класс, мы сначала загружаем его родительский класс.Этот процесс загрузки его родительского класса называется неявным вызовом.

явный вызов

Использование ключевых слов this и super называется явным вызовом

Знания указывают на то, что нужно сказать в этой статье

Ключевое слово this в конструкторе представляет объект Java, который в данный момент инициализируется.

Возьмем пример

отец

package java_this;
public class father {
    
    
    private String dec;
 
    public father() {
    
    
        this.dec=getDec();
    }
    public String getDec(){
    
    
        return "this is father";
    }
    public String toString(){
    
    
        return dec;
        }
}

В конструкторе родительского класса мы используем ключевое слово this и пишем метод
getDec() , который перегружается дочерним классом.

Подкласс

package java_this;

public class son extends father{
    
    
    private String name;
    private double weight;

    public son(String name,double weight){
    
    
        this.name=name;
        this.weight=weight;
    }
    @Override 
    //我们重写了这个方法 父类的方法只return了一个"this is father"
    public String getDec(){
    
    
        return "the son name="+name+" weight="+weight;
    }

    public static void main(String[] args) {
    
    
        System.out.println(new son("wxt",80));
    }
}

результат

вставьте сюда описание изображения

Почему на нашем входе что-то есть, а на выходе пусто?

Мы могли бы также нарисовать картинку в конструкторе, чтобы дать нам понять,
вставьте сюда описание изображения
потому что загрузчик класса сначала загружает родительский класс, а конструктор родительского класса вызывает this.dec=getDec();
но теперь мы сын() этого класса Внутри, это вызывает getDec() сына
, а метод getDec() возвращает "the son name="+name+" weight="+weight;" при выполнении.

По данному примеру мы видим, что в крайнем случае родительский класс может вызвать метод подкласса

Давайте изменим код, чтобы вызвать метод подкласса
вставьте сюда описание изображения

рекомендация

отblog.csdn.net/qq_47431361/article/details/123189499