6 instanceof关键字
-
在多态应用种,判断某一个父类型变量中存储的对象是否属于某一种子类型
class A{}
class B extends A{} //B is-a A
class C extends B{} //C is-a B . C is-a A
A a = new B();
//c代表的是C对象
(a instanceof A) // true
(a instanceof B) // true
(a instanceof C) // false
(a instanceof Object) // true
(a instanceof String) // 报错
7 对象克隆
-
所谓的克隆,就是根据一个对象,创建另一个内容相同的新对象
-
需要对象备份的时候可以使用克隆
-
Object类中有一个clone方法,底层可以实现对当前对象的备份。
-
clone方法是一个protected方法,只能在子类中完成克隆,不能被外部对象强行克隆
-
需要子类重写clone方法,完成clone操作
-
同时还需要子类实现Cloneable接口
-
总结如何实现一个类对象的克隆?
-
子类实现Cloneable接口
-
子类重写clone方法
-
子类修改重写的clone方法的访问权限,改为public (是否支持外部克隆)
public class Goods implements Cloneable{ @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } }
-
扩展 浅克隆与深克隆
存在一种包含关系
class A{}
class B{
A a ;
}
-
浅克隆 : 在克隆B的时候,,新的B对象中,a属性的地址与原来B对象中a属性的地址相同
-
深克隆:在克隆B的时候,新的B对象中,a属性 地址是一个新的A对象的地址
也就是说,不仅仅将B对象做了克隆,还将B对象包含的A对象也做了克隆
深克隆需要手动实现
那么今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~