java语法

对象也被认为是一个Student的实例。怎样去解决这个问题呢?那就只有不用instanceof运算符,而使用对象的getClass()方法来判断两个对象是否属于同一种类型,例如,将上面的equals()方法修改为:}$
public boolean equals(Object obj){ @c
if(obj.getClass()==Student.class){2
Student s=(Student)obj;N-fUs=
if(s.name.equals(this.name) && s.age==this.age){n
return true;+f
}cTCg
}7PJIE.
return super.equals(obj);7|
}l.(
这样才能保证obj对象一定是Student的实例,而不会是Student的任何子类的实例。F$
?www.wendangwang.com为java提供源动力  /
4,浅复制与深复制Xy
1)浅复制与深复制概念$umh
⑴浅复制(浅克隆)2O`BP[
被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。^$:6D
?www.wendangwang.com为java提供源动力  z<2
⑵深复制(深克隆))l
被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。^UuB
?www.wendangwang.com为java提供源动力  0IWqw]
2)Java的clone()方法H_xE
⑴clone方法将对象复制了一份并返回给调用者。一般而言,clone()方法满足:.
①对任何的对象x,都有x.clone() !=x//克隆对象与原对象不是同一个对象@l
②对任何的对象x,都有x.clone().getClass()= =x.getClass()//克隆对象与原对象的类型一样{*{XIE
③如果对象x的equals()方法定义恰当,那么x.clone().equals(x)应该成立。]S.
?www.wendangwang.com为java提供源动力  
⑵Java中对象的克隆EW
①为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。JbT@p
②在派生类中覆盖基类的clone()方法,并声明为public。)5
③在派生类的clone()方法中,调用super.clone()。qr9l3p
④在派生类中实现Cloneable接口。'K;
?www.wendangwang.com为java提供源动力  9
请看如下代码:gM
?www.wendangwang.com为java提供源动力  N5i
class Student implements Cloneable{H,\1%
String name;as
int age;2Ng-}
?www.wendangwang.com为java提供源动力  >
Student(String name,int age){YGslNQ
this.name=name;C/
this.age=age;},:
}KPbna
?www.wendangwang.com为java提供源动力  r08w|
public Object clone(){I&5Kak
Object obj=null;81wJ;
try{M
obj=(Student)super.clone();c
//Object中的clone()识别出你要复制的是哪一个对象。(S
}'Z]VV
catch(CloneNotSupportedException e){8c

你可能喜欢

  • Java笔记
  • JAVA编程题全集及答案
  • 语法大全
  • java基础教程
  • JAVA关键字
  • java基本语法
  • java学习总结

java语法相关文档

最新文档

返回顶部