Есть ли какая-либо связь между классом, реализующим интерфейс, и этим интерфейсом? - PullRequest
4 голосов
/ 26 июня 2009

Рассмотрим эту иерархию классов:

  • Book extends Goods
  • Book implements Taxable

Как мы знаем, существует взаимосвязь между подклассом и его суперклассом (is-a).

В: Существуют ли какие-либо отношения типа "is-a" между Book и Taxable?

ХОРОШИЕ ответы, но вы сказали, что "is-a" также является отношением между Book и Taxable, , но"is-a" является отношением между классами а интерфейс это не класс!

Ответы [ 8 ]

8 голосов
/ 26 июня 2009

Да. Отношения точно такие же

Книга также облагается налогом.

EDIT

Интерфейс - это артефакт, который совпадает с ключевым словом Java (и, вероятно, C #, я не знаю) interface.

В интерфейсе OO - это набор операций, которые класс «совершает», и ничего более. Это как контракт между классом объекта и его клиентами.

Языки программирования OO, у которых нет ключевого слова interface, все еще имеют концепцию OO интерфейса класса.

5 голосов
/ 26 июня 2009

Ну, есть "поддержка операций".Лично я не считаю, что мнемоника "is-a", "can-do" и т. Д. Ужасно полезна.Я предпочитаю думать с точки зрения того, что допускают типы, специализируют ли они существующее поведение или сами реализуют поведение и т. Д. Аналогии, такие как абстракции, имеют тенденцию быть неплотными.Если вы знаете, в чем заключается различие между наследованием интерфейса и наследованием реализации, вам, вероятно, не понадобится дополнительная фразеология для его выражения.

3 голосов
/ 26 июня 2009

отношение будет таким, как указано: 'реализует'

эти имена отношений возникают из использования в предложениях. «Книга» is-a «Товар» может быть написана без кавычек и дефисов, и это имеет смысл. аналогично, книгу «реализует» облагаемый налогом можно написать без кавычек.

3 голосов
/ 26 июня 2009

"Ведет себя как ..."

Вот что я бы сказал. Не является чем-то, но ведет себя как-то. Или как альтернатива «может что-то», но это более конкретно, чем поведение.

2 голосов
/ 28 сентября 2013

Когда мы говорим, что один класс расширяет другой класс, он имеет сильную связь, известную как «наследование». Это означает, что когда один дочерний объект расширяет родительский, тогда ребенок должен иметь возможность наследовать что-то от родительского класса, например, лошадь - это животное. Лошадь наследует некоторые свойства животного. Но когда класс реализует другой класс, тогда дочерний класс пытается реализовать контракт, нет необходимости наследовать что-либо от родителя, просто следуя контракту, поэтому интерфейс по умолчанию все методы являются абстрактными, но вы можете предоставить некоторые конкретные метод в классе (для наследования дочернего класса) и может сделать некоторые из них абстрактными.

Так что для меня расширяется наследование и интерфейс в реализации контракта. Надеюсь, это удовлетворительно

1 голос
/ 26 июня 2009

О чем все волнение? Несколько вопросительных знаков и несколько восклицательных знаков?

Вас беспокоит, что мы можем сказать, что Книга облагается налогом, хотя Taxable является интерфейсом? Пожалуйста, успокойся.

Существуют разные ключевые слова в языке для отношения класса к интерфейсу и суперклассу, но концептуальная природа этих отношений одинакова, поэтому вполне разумно использовать одни и те же английские термины для их описания. Книга облагается налогом, так же как и книга - это хорошо Чтобы приблизить условия, Книга является TaxableItem. Все в порядке.

1 голос
/ 26 июня 2009

Это должно сделать:

public static boolean implementsInterface(Object object, Class interf){
    return interf.isInstance(object);
}

Например,

 java.io.Serializable.class.isInstance("a test string")

оценивается как истинное.

from: Проверка, реализует ли объект интерфейс

0 голосов
/ 04 июля 2012
Book implements Taxable

Здесь также соотношение между Book и Taxable равно

Книга 'является' Налогооблагаемой

См. Это . Вы можете видеть это говорит

Когда мы говорим о наследовании, наиболее часто используемое ключевое слово будет extends , а внедряет . Эти слова будут определять, является ли один объект IS-A типом другого.

...