[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-core-chem-abstraktnyy-klass-otlichaetsya-ot-interfeysa-v-kakikh-sluchayakh-sleduet-ispolzovat-abstraktnyy-klass-a-v-kakikh-interfeys":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":20,"progress":21,"seo":22},24,"chem-abstraktnyy-klass-otlichaetsya-ot-interfeysa-v-kakikh-sluchayakh-sleduet-ispolzovat-abstraktnyy-klass-a-v-kakikh-interfeys",2,"java-core","Java Core","☕","Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?","+ В Java класс может одновременно реализовать несколько интерфейсов, но наследоваться только от одного класса.\n+ Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг с другом.\n+ Абстрактный класс - средство, позволяющее избежать написания повторяющегося кода, инструмент для частичной реализации поведения. Интерфейс - это средство выражения семантики класса, контракт, описывающий возможности. Все методы интерфейса неявно объявляются как `public abstract` или (начиная с Java 8) `default` - методами с реализацией по-умолчанию, а поля - `public static final`.\n+ Интерфейсы позволяют создавать структуры типов без иерархии.\n+ Наследуясь от абстрактного, класс «растворяет» собственную индивидуальность. Реализуя интерфейс, он расширяет собственную функциональность.\n\nАбстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса, и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.","","junior",[15,16,17,18,19],"наследование","core","oop","abstract","interface",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":32,"featuredSnippetReady":33},"Абстрактный класс vs интерфейс в Java — 5 ключевых отличий — Gymterview","Абстрактный класс содержит частичную реализацию и поддерживает одиночное наследование. Интерфейс — контракт с множественной реализацией. Когда что использовать.","Абстрактный класс vs интерфейс — 5 отличий и правила выбора","Абстрактный класс — для иерархии is-a с общим кодом. Интерфейс — контракт для несвязанных классов. Множественная реализация только через интерфейсы.",[28,29,30,31],"абстрактный класс vs интерфейс Java","abstract class interface разница","когда использовать абстрактный класс","интерфейс или абстрактный класс","Класс может реализовать несколько интерфейсов, но наследоваться только от одного класса. Абстрактный класс — инструмент для частичной реализации поведения в иерархии is-a. Интерфейс — контракт, описывающий возможности. Абстрактные классы используют для однотипных классов с общим кодом, интерфейсы — во всех остальных случаях.",true]