2015-10-10 2 views
0

Так что я смотрел на учебник и увидел эту строку кода:Создайте новый объект при создании нового метода, как это возможно?

Thread timer = new Thread() { 
    @Override 
    public void run(){ 
    // etc.... 
    } 
} 

Что здесь происходит? Они создают новый объект класса Thread и объявляют, что метод запускается при создании этого объекта? Как это возможно? Мое понимание заключалось в том, что объект получил свои методы из своего класса?

ответ

0

Это Anonymous Class. Он определяет/создает класс, но переопределяет или реализует метод в этом классе в этом одном месте. Анонимный класс нельзя вызвать/создать в другом месте.

Когда ваша программа запускает код, где этот анонимный класс определен, он создаст объект этого класса с помощью методов, которые вы определили в нем. Любые последующие вызовы тех методов этого созданного объекта будут использовать переопределенные методы, которые вы определили.

Это может использоваться для классов (если они не являются final), абстрактных классов и интерфейсов.

0

Это меканизм называется Анонимные классы. Таким образом, вы можете объявить новый экземпляр класса, выполнив все элементы abstact. В этом коде реализован анонимный экземпляр Тема:, by implemnting public void run() метод, поэтому вы можете объявить свою функциональность внутри тела.

Дополнительная информация здесь: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

Смежные вопросы