[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-core-pochemu-metod-clone-obyavlen-v-klasse-object-a-ne-v-interfeyse-cloneable":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":19,"progress":20,"seo":21},90,"pochemu-metod-clone-obyavlen-v-klasse-object-a-ne-v-interfeyse-cloneable",2,"java-core","Java Core","☕","Почему метод `clone()` объявлен в классе `Object`, а не в интерфейсе `Cloneable`?","Метод `clone()` объявлен в классе `Object` с указанием модификатора `native`, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как `protected`, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс `Cloneable` является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода `clone()` у не `Cloneable` объекта вызовет выбрасывание `CloneNotSupportedException`.","","middle",[15,16,17,18],"core","clone","cloneable","object",[],null,{"title":22,"description":23,"ogTitle":22,"ogDescription":24,"keywords":25,"schemaAnswer":30,"featuredSnippetReady":31},"Почему clone() в Object, а не в Cloneable — Gymterview","Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable: native-реализация поверхностного копирования и маркерный интерфейс.","Почему метод clone() объявлен в классе Object с модификатором native, а Cloneable является маркерным интерфейсом.",[26,27,28,29],"clone Object Java","Cloneable интерфейс","маркерный интерфейс","CloneNotSupportedException","Метод clone() объявлен в классе Object с модификатором native для доступа к стандартному механизму поверхностного копирования объектов. Он также объявлен как protected, чтобы его нельзя было вызвать у не переопределивших его объектов. Интерфейс Cloneable является маркерным (не содержит методов) и нужен лишь для обозначения того, что объект готов к клонированию. Вызов clone() у не Cloneable объекта вызовет CloneNotSupportedException.",true]