Является ли интерфейс Java абстрактным классом? [Дубликат]

13
задан Bill the Lizard 16 September 2012 в 15:53
поделиться

7 ответов

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

Краткий обзор? Ад да. Класс? Нет.

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

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

23
ответ дан Blair Conrad 16 September 2012 в 15:53
поделиться
  • 1
    @Pavel в худшем случае, мне нужен O (n), я заявил это в своем сообщении. Я знаю, что это - просто частичное решение, но возможно может быть улучшено. – pajton 8 March 2010 в 16:04

Весь интерфейс действительно краткий обзор

На самом деле, можно объявить метод, поскольку краткий обзор в интерфейсе... кроме любого 'checkstyle' инструмента скажет Вам, что абстрактное ключевое слово избыточно. И все методы общедоступны.

, Если класс реализует интерфейс и не реализует все его методы, он должен быть отмечен как краткий обзор. Если класс будет абстрактен, один из его подклассов, как ожидают, реализует свои нереализованные методы.

Для повторения других ответов интерфейс не является классом .

, интерфейс ссылочный тип , подобен классу, который может содержать только константы, сигнатуры методов и вложенные типы. Нет никаких тел метода. Интерфейсы не могут быть instantiated—, они могут только быть реализованы классами или расширены другими интерфейсами.

Интерфейсы не являются частью иерархии классов, хотя они работают в сочетании с классами.

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

<час>

Для лучше объяснения, почему интерфейс не является классом, рассмотрите следующее:

1/интерфейс тип , используемый [1 123] значения

2/, который класс для Объектов

3/:

Object a = new Date();
String s = a.toString();
  • тип переменной является Объектом (который является на самом деле нотацией типа в исходном коде Java, означающем ссылка к Объекту),
  • , но классом объекта, на который это указывает, является Дата.

тип (Объект) только влияет на то, какой код допустим согласно проверке типа компилятора, но не , что на самом деле делает код.

класс объекта влияет на то, что делает код, так, чтобы a.toString () назвали во вторых возвратах строки Строку, которая похожа на Дату, не ту, которая похожа на "java.lang.Object@XXXXXXXX".

, Так как Интерфейс является типом, он используется для значений только и не представит то, что объекты на самом деле сделают с точки зрения времени выполнения.

6
ответ дан VonC 16 September 2012 в 15:53
поделиться

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

1
ответ дан Jon Skeet 16 September 2012 в 15:53
поделиться
  • 1
    ошеломите меня didn' t даже не забывают отвечать на этот вопрос, пока я не видел этот новый комментарий! Я don' t помнят, почему те были всеми заглавными буквами, но я думаю Paul' s получил суть его:) – Josh E 6 May 2010 в 16:51

В Java, хотя, существует скручивание к рассказу - все Интерфейсы в Java расширяют java.lang. Возразите! Попытайтесь добавить метод:

общественность пусто уведомляют ();

в интерфейсе и видят то, что происходит..

Интерфейс, расширяющий Класс - который делает Интерфейс Классом? Или Класс Интерфейс?? Uhh-ха.. Угадайте, что это был взлом, который имел , чтобы быть сделанным для предотвращения интерфейсов, переопределяющих определения в java.lang. Возразите, что реализации интерфейса должны были расшириться так или иначе.

3
ответ дан Gowri 16 September 2012 в 15:53
поделиться
  • 1
    Ага! Да, очень хорошая идея: inline-block более близкая имитация плаваний. We’re все еще оставлен с проблемой упорядочивания, но если we’re, пропускающий что-то, there’s никакой не-JavaScript путь вокруг этого. Победитель! – Paul D. Waite 4 May 2010 в 15:28

Интерфейс содержит прототип методов (т.е. Объявление) не, определение, но Абстрактный класс может содержать определение метода & по крайней мере один Абстрактный метод (метод только с прототипом)

0
ответ дан kedar kamthe 16 September 2012 в 15:53
поделиться

Да, Интерфейс неявно Абстрактен. Взгляд за кулисы относительно пути это кодируется к .class файл.

Семантика забавная вещь хотя; при условиях экзамена "абстрактный класс" должен был бы быть буквально скомпилирован от .java исходный файл с помощью abstract class в объявлении Класса.

1
ответ дан Ande TURNER 16 September 2012 в 15:53
поделиться
  • 1
    Иногда IE 6 doesn’t слышит правильно, если Вы не кричите. – Paul D. Waite 4 May 2010 в 15:27

Интерфейсы используются для прерывания наследования объекта. Они могли содержать два или более объекта нескольких классов. и иерархии классов. Смотрите на интерфейс как на розетку. Все классы реализация интерфейса должна иметь такой же компьютер, кофеварка, вентилятор и холодильник должен иметь такое же устройство, чтобы мощность.

0
ответ дан 1 December 2019 в 19:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: