JAVA对象clone方法的示例分析

小编给大家分享一下JAVA对象clone方法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

专注于为中小企业提供做网站、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业吉林免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

1.Cloneable接口

这个接口一个方法都没有,但是要使用clone方法,就必须实现这个接口,否则抛出CloneNotSupportedException异常

2.clone方法的返回值

先附上两个类代码

package pojo;

/**
 * @Author : ZGQ
 * @Date : 2020/3/11 22:12
 * @Version : 1.0
 */
public class Person implements Cloneable{
  String name;
  int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  @Override
  protected Object clone() throws CloneNotSupportedException {
    System.out.println(super.clone().getClass());
    Person p = (Person) super.clone();
    p.name=this.name;
    p.age=this.age;
    return p;
  }
}
package pojo;

/**
 * @Author : ZGQ
 * @Date : 2020/3/11 22:21
 * @Version : 1.0
 */
public class Girl extends Person {
  char cup;

  public Girl(String name, int age, char cup) {
    super(name, age);
    this.cup = cup;
  }

  @Override
  public Object clone() throws CloneNotSupportedException {
    System.out.println(super.clone().getClass());
    Girl girl = (Girl) super.clone();

    girl.cup=this.cup;
    return girl;
  }

  @Override
  public String toString() {
    return "Girl{" +
        "cup=" + cup +
        ", name='" + name + '\'' +
        ", age=" + age +
        '}';
  }
}

我一开始很困惑,为什么clone方法可以将父类的实例交给子类的引用,输出一看才知道,在第一次clone时,创建的就是子类的对象

再创建一个boys类,或者直接调用Person.clone也一样,谁调用clone方法,就创建谁的实例

调用girl.clone()

JAVA对象clone方法的示例分析

调用person.clone()

JAVA对象clone方法的示例分析

调用boy.clone()

JAVA对象clone方法的示例分析

3.如果一个类没有实现Cloneable接口,那它就不可以被clone,它的子类也就不可能实现真正的深复制

多嘴一句,为什么不把clone方法定义在Cloneable中呢?

4.以上写法就是深复制的写法

5.为什么调用clone出来的是子类的实例呢?

可以显而易见的是确实这样比较合乎情理,但是java语言向我们隐瞒了实现细节,又是一个开后门的语法,像包装类可以使用运算符直接运算一样无耻

以上是“JAVA对象clone方法的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站标题:JAVA对象clone方法的示例分析
文章URL:http://www.hxwzsj.com/article/pggcpd.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 网站建设公司 网站建设公司 重庆网站制作 高端网站设计推广 营销型网站建设 定制级高端网站建设 响应式网站设计 成都企业网站建设 教育网站设计方案 营销网站建设 成都商城网站制作 网站建设公司 企业网站建设 重庆企业网站建设 高端定制网站设计 网站建设方案 成都网站建设公司 响应式网站设计方案 成都网站建设公司 成都商城网站建设 成都网站建设公司 手机网站制作