2013-06-13 5 views
5

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

+0

В вашем интерфейсе есть код для использования? – ChiefTwoPencils

ответ

13

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

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

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

Просто в хорошей объектно-ориентированной программе вы никогда не должны создавать экземпляр абстрактного класса или интерфейса. Если вы это сделаете, дизайн, вероятно, неправильный.

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

+2

+1 для такого отличного объяснения. – Ranjit

+0

хорошо хотя бы для вас, блестящий для меня .. +1 – Elltz

3

Вот базовое объяснение без более глубокой концепции.

  • Interface не имеет метода, реализованный, так что нет никакой цели создать его экземпляр, как «ничего» будет происходить при вызове метода
  • Abstract класс может иметь abstract метод заявления, которое, как метод интерфейса, без реализации ,
1

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

+0

Может уточнить, что * none * будет с интерфейсом. – ChiefTwoPencils

Смежные вопросы