Java object类

Java object类

函数

  1. tostring()

  2. equals()

  3. hashcode()

  4. clone() 深拷贝
    深拷贝与浅拷贝:

    参考:
    一文搞懂Java中深拷贝和浅拷贝的区别
    细说 Java 的深拷贝和浅拷贝

对于每个类是否允许被拷贝,则在于是否实现了Cloneable接口
然后在类中override clone()函数,其中在clone函数中使用super.clone()即可返回一个clone对象再接着强制转换即可。但这只是浅拷贝。
如果类中存在引用类型的数据字段,如Person类中声明了Book类引用类型数据字段,在Person()构造函数中实现Book book1= new Book(),然后在main函数中有 Person p1 = new Person();
Person p2 = p1.clone(),则此时p2所得到的仍然是book1。要想深拷贝,即需要对Book 类型实现Cloneable接口,覆写clone函数,然后在Person的clone中调用Book 类的clone函数。
关键代码:

// 浅拷贝
class Book {
}
class Person implements cloneable{
	public Book book1 = new Book();//记book1为 “Java入门”
	@Override
	public Object clone(){
		return super.clone();
	}
main(){
	Person p1 = new Person();
	Person p2 = (Person)p1.clone();//p2 与p1共同持有书籍 “Java入门” 
}

//深拷贝
class Book implements cloneable{
	@Override
	public Object clone(){
		return super.clone();
	}
}
class Person implements cloneable{
	public Book book1 = new Book();//记book1为 “Java入门”
	@Override
	public Object clone(){
		Person p = (Person)super.clone();
		p.book1 = (Book)book1.clone() //对"Java入门"复制了一本新书记为“Java入门-副本”
		return p;
	}
main(){
	Person p1 = new Person();
	Person p2 = (Person)p1.clone();//p2 持有书籍 “Java入门-副本” 
}

5.getClass()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值