首页 > 其他分享 >clone方法

clone方法

时间:2023-06-08 21:25:26浏览次数:30  
标签:name clone Student4 age 方法 public s1

//Syudent4

/*
* Object类的finalize(完成)方法和Clone方法
*
* protected void finalize()
当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。(垃圾回收器)
* protected Object clone()
创建并返回此对象的副本。(克隆)
* cloneable:
* public interface Cloneable一个类实现Cloneable接口,
* 以指示Object.clone()方法,
* 该方法对于该类的实例进行现场复制是合法的。
* 在不实现Cloneable接口的实例上调用对象的克隆方法导致抛出异常CloneNotSupportedException 。
按照惯例,实现此接口的类应使用公共方法覆盖Object.clone (受保护)。

* */
public class Student4 extends Object implements Cloneable{//实现标记接口,没有抽象方法(是一个标记接口
private String name;
private int age;

public Student4() {
super();
}

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

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
//clone源码
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}

}

//测试类
//克隆只是对象的引用指向同一个对象,并不是地址也一样,一个地址只能存放一个对象
public class Student4_Test {


public static void main(String[] args) throws CloneNotSupportedException{
//对象的克隆
Student4 s1 = new Student4("周杰伦",18);
Student4 s2 = s1;
//s1和s2算两个对象吗?不算,只算两个引用,她两的内存地址指向的都是同一个,不算克隆
//如何克隆对象?
//Object clone = s1.clone();报错,因为一个对象是否能克隆,要看该对象是否实现了一个标记接口(cloneable)
//如果一个接口内部是空的,那么咱们叫这个接口是’标记接口‘,作用是打标记
Object clone = s1.clone();//异常:CloneNotSupportedException,需要抛出异常
Student4 s3 = (Student4)clone;//向下转型,s3是是克隆得到的,
//s1和s3是同一个对象吗? 是
System.out.println(s1);//直接打印和调用toString方法是一样的,结果:Student4{name='周杰伦', age=18}
System.out.println(s3);//打印 结果:Student4{name='周杰伦', age=18}
//s1和s3内存地址一样吗?一个地址只能放一个对象
System.out.println(s1==s3);//FALSE

}
}

标签:name,clone,Student4,age,方法,public,s1
From: https://www.cnblogs.com/Studentcy/p/17467689.html

相关文章

  • 中文乱码解决(多种方法)(转)
    使用tomcat时,相信大家都回遇到中文乱码的问题,具体表现为通过表单取得的中文数据为乱码。一、初级解决方法通过一番检索后,许多人采用了如下办法,首先对取得字符串按照iso8859-1进行解码转换,然后再按照gb2312进行编码,最后得到正确的内容。示例代码如下:Stringpara=newString......
  • toString方法
    //Student2类/**一般情况下toString方法堆我们来说没有什么用,所以要重写toString方法*Alt+enter*Alt+insert**/publicclassStudent2extendsObject{privateStringname;privateintage;publicStudent2(){super();}publicStudent2(String......
  • equals方法
    //Student3类publicclassStudent3{privateStringname;privateintage;publicStudent3(){super();}publicStudent3(Stringname,intage){this.name=name;this.age=age;}publicStringgetName(){......
  • 使用axios的post方法传输对象数据和后台数据进行解析判断
    使用vue的v-model绑定生成对象数据的通过axios传输数据操作的时候,对象中属性的命名必须和实体中的一致。实体:privateIntegerid;privateStringname;privateStringnickname;privateStringpassword;privateIntegerage;privateStringgend......
  • 用Mathematica和SciPy阐明Jacobi椭圆函数的定义方法
    这,这个,那,那个Jacobi椭圆函数SN和CN类似于三角函数正弦和余弦。它们出现在非线性振动和保形映射等应用中。不幸的是,定义这些函数有多种约定。这篇文章的目的是澄清围绕这些不同公约的混淆。上面的图像是函数sn[1]的一个图。模量、参数和模数角Jacobi函数有两个输入。我们通常认为Jac......
  • jQuery 事件绑定方法 bind
    jQuery事件绑定方法(bindhovertogglelive....)、删除事件方法(unbind,die)及事件对象事件绑定方法:1.<type>(function)$("button").click(function(){...});2.bind(map)$("input[type='text']").bind({focus:function(){.......
  • 去重复方法小集
    //jsfunctionremoveDumpicatedItem(arr){ varret=[]; for(vari=0;i<arr.length;i++){if(ret.indexOf(arr[i]==-1)){ ret.push(arr[i])} } returnret;}//java(无序)publicstaticListremoveDuplicate(Listlist){ HashSethashSet=newHashSet(lis......
  • RedisTemplate常用方法总结
    很多公司都将redisTemplate进行了封装,封装成业务所需要的RedisUtil工具类方便进行调用,本篇文章总结了redisTemplate常用的一些方法。Redis常用的数据类型:•String•Hash•List•Set•zSet•SortedsetString类型判断是否有key所对应的值,有则返回true,没有则返回false......
  • html照片从模糊到清晰的渐变加载显示方法
    1.背景介绍在网络相册应用中用户查看照片是最朴素的需求,当网络比较慢的时候查看照片等待的时间是比较长的,用户体验会很差。 2.现状现在加载照片的方法主要有一下两种:(1)最原始的方式在html页面直接用img标签加载显示照片。该方法在网络速度比较慢或者要显示的照片比较大的时候会......
  • js数组sort方法排序
    数组的sort方法可以对数组进行排序,默认是按照字符编码的顺序进行排序,可以自定义规则。sort方法会修改原数组。自定义规则简述:比较函数两个参数a和b,(a是b的后一个元素),返回a-b升序,返回b-a降序。letarr=[3,5,2,9,1];arr.sort();//默认升序arr.sort((a,b)=>{//......