Advertisement
Guest User

Playing with clones

a guest
Feb 24th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.51 KB | None | 0 0
  1. package page6;
  2.  
  3. public class PlayingWithClones {
  4.  
  5.     public static void main(String[] args) throws CloneNotSupportedException {
  6.         Cat cat = new Cat("Мурзик");
  7.         Boy boy = new Boy("Андрей", cat);
  8.         Boy boy2 = (Boy) boy.clone();
  9.         System.out.println("Поверхностное клонирование:");
  10.         System.out.println("Вот мой товарищ " + boy);
  11.         System.out.println("А вот его клон: " + boy2);
  12.        
  13.         Cat cat2 = new Cat("Барсик");
  14.         Girl girl = new Girl("Лиза", cat2);
  15.         Girl girl2 = (Girl) girl.clone();
  16.         System.out.println("Глубокое клонирование:");
  17.         System.out.println("Вот моя подруга " + girl);
  18.         System.out.println("А вот ее клон:  " + girl2);
  19.     }
  20.    
  21.    
  22. }
  23.  
  24. class Boy implements Cloneable {
  25.     public String name;
  26.     public Cat cat;
  27.    
  28.     public Boy(String name, Cat cat) {
  29.         this.name = name;
  30.         this.cat = cat;
  31.     }
  32.    
  33.     @Override
  34.     public String toString() {
  35.         return "мальчик " + name + " (" + super.toString() + ") и его " + cat;
  36.     }
  37.     @Override
  38.     protected Object clone() throws CloneNotSupportedException {
  39.         return super.clone();
  40.     }
  41. }
  42.  
  43. class Girl implements Cloneable {
  44.     public String name;
  45.     public Cat cat;
  46.    
  47.     public Girl(String name, Cat cat) {
  48.         this.name = name;
  49.         this.cat = cat;
  50.     }
  51.    
  52.     @Override
  53.     public String toString() {
  54.         return "девочка " + name + " (" + super.toString() + ") и ее " + cat;
  55.     }
  56.     @Override
  57.     protected Object clone() throws CloneNotSupportedException {
  58.         Girl girl = new Girl(name, (Cat) cat.clone());
  59.         return girl;
  60.     }
  61. }
  62.  
  63. class Cat implements Cloneable {
  64.     private String name;
  65.    
  66.     public Cat(String name) {
  67.         this.name = name;
  68.     }
  69.    
  70.     @Override
  71.     public String toString() {
  72.         return "кот " + name + " (" + super.toString() + ")";
  73.     }
  74.    
  75.     @Override
  76.     protected Object clone() throws CloneNotSupportedException {
  77.         return super.clone();
  78.     }
  79. }
  80.  
  81. //Поверхностное клонирование:
  82. //Вот мой товарищ мальчик Андрей (page6.Boy@15db9742) и его кот Мурзик (page6.Cat@6d06d69c)
  83. //А вот его клон: мальчик Андрей (page6.Boy@7852e922) и его кот Мурзик (page6.Cat@6d06d69c)
  84. //Глубокое клонирование:
  85. //Вот моя подруга девочка Лиза (page6.Girl@4e25154f) и ее кот Барсик (page6.Cat@70dea4e)
  86. //А вот ее клон:  девочка Лиза (page6.Girl@5c647e05) и ее кот Барсик (page6.Cat@33909752)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement