9

В чем разница между простирается и орудия в Java по отношению к производительности и памяти, и т.д.. Например, возьмем следующие сценарии,В чем разница между «проходит» и «реализует» в Java по отношению к производительности и памяти, и т.д.

1) 

public interface PrintResult 
{ 
    public final int NO_ERROR=0; 
    public final int SUCCESS=1; 
    public final int FAILED=-1; 
} 


public class PrintProcess implements PrintResult 
{ 
    //Perform some operation 
} 



2) 

public class PrintResult 
{ 
    public final int NO_ERROR=0; 
    public final int SUCCESS=1; 
    public final int FAILED=-1; 
} 


public class PrintProcess extends PrintResult 
{ 
    //Perform some operation 
} 

Для указанных выше сценариев (1,2), что разница между использованием расширяет (класс, производный ребенка), реализует (реализующий интерфейс). в отношении производительности, памяти и т. д. ?

+0

очередь 'возможно дублировать' кем-то. – ApprenticeHacker

+0

Извините, мой английский не очень хорошо. Поэтому, пожалуйста, простите мои ошибки –

+2

a) Сделайте тест и сообщите. б) Скомпилировать и декомпилировать и сравнить результаты. c) Я не ожидаю разницы в производительности. Где я должен? Называть 1 миллион раз «новым» в любом классе? –

ответ

8

Во время памятного Q & сеанса, кто-то спросил Джеймс Гослинг (изобретатель в Java): Если бы вы могли сделать Java более раз, что бы вы изменили?. я оставил бы из классов, он ответил

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

Некоторые люди также считают, что extends снижает гибкость их кода.

Однако, я сомневаюсь, что есть огромная разница в производительности, эффективности и т. Д. Фактически, они могут даже создавать один и тот же байт-код (хотя я не уверен). И вы сравниваете две разные вещи, которые имеют разные функции, например, спрашивают, эффективны ли Яблоки, чем апельсины.

+0

Соглашается: это похоже на вопрос, являются ли яблоки более эффективными, чем апельсины. – Haozhun

+0

Привет, мне нужно больше объяснений с некоторыми примерами в реальном времени. Тогда это будет полезно. Поскольку в некоторых статьях в Интернете я уведомил, что они имеют огромную разницу в отношении производительности. Иногда в этом месте, которое распространяется, очень хорошо, если мы используем интерфейс, тогда это улучшает производительность. Поэтому, пожалуйста, дайте больше объяснений. –

+0

На практике это не имеет большого значения, если они производят один и тот же байт-код. Тем не менее, байт-код не имеет большого значения, потому что JIT легко будет достаточно умным, чтобы взорвать его. –

1

класс расширяет другой класс и реализует интерфейс. интерфейс расширяет другой интерфейс. Интерфейс не имеет реализованных методов, все определенные методы пустые, поэтому, если класс наследует от интерфейса, он должен реализовать свои методы. Но если Class1 наследует от Class2, то он уже имеет некоторые рабочие методы (из класса 2) и просто расширяет Class2.

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

  • Нет связанных вопросов^_^