title: Why doesn't the java.lang.Object class clone() method have a body?
body: <p>There are lot's of questions on this platform regarding clone() method of Object class. Everyone is answering different. There are lots of question regarding why clone() is protected. Some says..</p>
  
  <blockquote>
    <ol>
    <li>clone() is protected, so we have to provide our own clone() and indirectly call Object.clone() from it.</li>
    <li>clone() is protected soo outside to java.lang package we can access this method in subclass directly or with subclass Object only.</li>
    <li>clone must not be called on non-cloneable objects, therefore it is not made public.</li>
    </ol>
  </blockquote>
  
  <p>Now Here are my questions.</p>
  
  <ol>
  <li>If the above 2nd point is correct then how we can <strong>access clone() in subclass directly</strong>.</li>
  <li>What are <strong>non cloneable objects</strong>. </li>
  <li>What is the need to be Override clone() in subclass in case of cloning. Whereas the protected member of another package we can access inside another package by inheriting its parent class directly.</li>
  <li><p>Why Object.clone() dosen't have body part.</p>
  
  <p>protected native Object clone() throws CloneNotSupportedException;</p></li>
  </ol>