Являются ли члены интерфейса абстрактными? - PullRequest
2 голосов
/ 13 апреля 2011

Ну, я знаю, что члены в интерфейсе действуют так, как будто они абстрактные, но действительно ли они абстрактные? Я имею в виду, что мне не нужно использовать это ключевое слово, поэтому я не уверен, является ли оно неявным или не является технически абстрактным ... Надеюсь, оно имеет смысл

Ответы [ 4 ]

5 голосов
/ 13 апреля 2011

Они не являются абстрактными - это контракт, определенный интерфейсом. «абстрактный» имеет специфическое значение, которое относится только к классам.

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

2 голосов
/ 13 апреля 2011

Неа. Абстрактные методы неявно являются виртуальными.

Реализации интерфейса не должны быть виртуальными. ( На самом деле, возможно явным образом реализовать «конфликтующие» интерфейсы (т. Е. Интерфейсы, объявляющие идентичные подписи членов). Это было бы невозможно с vtable single dispatch [1], потому что один слот vtable не может быть заполнен дважды )

[1] классический метод реализации виртуального наследования

2 голосов
/ 13 апреля 2011

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

Они не являются abstract в техническом смысле, как только классыabstract.

0 голосов
/ 13 апреля 2011

Они неявно абстрактны в том смысле, что у них не определено поведение, описана только подпись члена.

Я не знаю, как это выглядит на ИЛ (и, вероятно, на самом деле это никогда не понадобится).

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