Интерфейс скоро станет устаревшим? - PullRequest
2 голосов
/ 01 мая 2011

, как я обнаружил, абстрактный класс - это интерфейс, в котором нулевая реализация. я прав?

тогда почему в некоторых языках есть классы интерфейса, я имею в виду, что в C ++ нет интерфейса.

скоро ли это устареет?

Ответы [ 6 ]

6 голосов
/ 01 мая 2011

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

4 голосов
/ 01 мая 2011

C ++ не имеет интерфейсов, потому что поддерживает множественное наследование, чего нет в C #. C # предоставляет интерфейсы, чтобы обойти это препятствие, поэтому нет, интерфейс не устареет.

2 голосов
/ 01 мая 2011

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

1 голос
/ 01 мая 2011

C ++ не имеет интерфейсов, потому что в отличие от Java он допускает множественное наследование.Что в некотором смысле усложняет ситуацию.

1 голос
/ 01 мая 2011

C ++ не имеет специального синтаксиса для интерфейса, например, ключевого слова interface, потому что это просто решение по проекту, принятое разработчиком языка.Но C ++ действительно предлагает полную поддержку интерфейсов.

Интерфейсы не станут устаревшими.На самом деле техника использования интерфейсов становится все более и более широко используемой.

1 голос
/ 01 мая 2011

Нет, поскольку интерфейсы имеют свойство, которого нет у абстрактных классов только с абстрактными методами (или с любым другим классом): класс может реализовывать произвольно много интерфейсов, в то время как класс может наследовать только от одного другого класса. Поэтому, если вы возьмете все свои интерфейсы и превратите их в абстрактные классы, вы никогда не сможете заставить класс «реализовать» более одного «интерфейса».

Однако можно отметить, что ваши наблюдения верны на некоторых других языках, кроме C #. Например, в C ++ нет отдельной конструкции интерфейса; «Интерфейсы» в C ++ являются абстрактными классами только с абстрактными методами.

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