1.Cloneable接口 这个接口一个方法都没有,但是要使用clone方法,就必须实现这个接口,否则抛出CloneNotSupportedException异常 2.clone方法的返回值 先附上两个类代码 package pojo;/** * @Author : ZGQ * @Date : 2020/3/11 22:12 * @Version : 1.0 */publ
1.Cloneable接口 这个接口一个方法都没有,但是要使用clone方法,就必须实现这个接口,否则抛出CloneNotSupportedException异常 2.clone方法的返回值 先附上两个类代码
我一开始很困惑,为什么clone方法可以将父类的实例交给子类的引用,输出一看才知道,在第一次clone时,创建的就是子类的对象 再创建一个boys类,或者直接调用Person.clone也一样,谁调用clone方法,就创建谁的实例 调用girl.clone()
调用person.clone()
调用boy.clone()
3.如果一个类没有实现Cloneable接口,那它就不可以被clone,它的子类也就不可能实现真正的深复制 多嘴一句,为什么不把clone方法定义在Cloneable中呢? 4.以上写法就是深复制的写法 5.为什么调用clone出来的是子类的实例呢? 可以显而易见的是确实这样比较合乎情理,但是java语言向我们隐瞒了实现细节,又是一个开后门的语法,像包装类可以使用运算符直接运算一样无耻 |
2021-06-05
2021-05-27
2021-05-26
2021-06-05
2021-05-16