В чем разница между «расширяет» и «внедряет» в Java в отношении производительности и памяти, и т. Д. - PullRequest
9 голосов
/ 03 марта 2012

В чем разница между extends и , реализующими в 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) разница между использованием extends (порождение дочернего класса), реализует (реализация интерфейса). в отношении производительности, памяти и т. д.

Ответы [ 2 ]

8 голосов
/ 03 марта 2012

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

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

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

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

1 голос
/ 05 декабря 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...