title: super.clone() Queries?
body: <p>Kindly clarify me for the following questions.</p>
  
  <ol>
  <li>Does <code>super.clone()</code> perform Deep copying or shallow copying?</li>
  <li>In the below example, why don't we need class <code>CompositeObjCloneMe</code> as cloneable? Does <code>cObj</code> won't be cloned while trying to clone <code>CloneMe</code> object?
  Note: Even making <code>CompositeObjCloneMe</code> as cloneable doesn't have any impact on output.</li>
  <li>Why the output is behaving like shallow copying (Not deep coppying) since program is setting primitive value(<code>setCObjValue = 100</code>) of a class? (where primitive fields are deeply copied)</li>
  <li><p>Is it immutable Objects &amp;&amp; primitives are inherently deeply copied?</p>
  
  <pre><code>class CloneMe implements Cloneable {
      private CompositeObjCloneMe cObj;
  
      public CloneMe() {
          cObj = new CompositeObjCloneMe();
        }
  
      public void setCObjValue(int myOwnDt) {
          this.cObj.setObj(myOwnDt);
      }
      public int getCObjValue() {
          return this.cObj.getObj();
      }
      //Clone
      public Object clone() throws CloneNotSupportedException {
      return super.clone();
      }
  }
  
  class CompositeObjCloneMe {//implements Cloneable{
      private int value = 20;
      public void setObj(int i){
          value = i;
      }
      public int getObj(){
          return value;
      }
  //  public Object clone() throws CloneNotSupportedException{
  //      return super.clone();
  //  }
  }
  
  
  public class CloneTest {
      public static void main(String arg[]) {
          CloneMe realObj = new CloneMe();
          try {
              CloneMe cloneObj = (CloneMe) realObj.clone();
              realObj.setCObjValue(100);
              System.out.println(realObj.getCObjValue()  + "   " + cloneObj.getCObjValue());
          } catch (CloneNotSupportedException cnse) {
              System.out.println("Cloneable should be implemented. " + cnse);
          }
      }
  }
  </code></pre></li>
  </ol>
  
  <p>OUTPUT:   100   100</p>