Поиск по этому блогу

вторник, 2 октября 2012 г.

Вопросы на собеседовании Java программиста. Чем абстрактный класс отличается от интерфейса.

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


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

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

Абстрактный класс

  1. Класс  может наследовать только один абстрактный класс.
  2. Не могут быть созданы экземпляры абстрактного класса.
  3. Абстрактный класс может содержать любые поля
  4. Абстрактный класс  может содержать реализации методов
  5. В абстрактном классе можно описать конструктор
  6. Абстрактные методы (имеющие модификатор abstract) могут иметь модификатор либо public, либо protected.

Интерфейс

  1. В интерфейсе нельзя описать конструктор
  2. Интерфейс может содержать только общедоступные константы
  3. Интерфейс не может содержать реализации методов
  4. Класс может реализовывать любое количество интерфейсов
  5. Методы в интерфейсе могут иметь модификаторы только public и abstract.  По умолчанию они уже public abstract

Get it on Google Play



Комментариев нет:

Отправить комментарий