Java入门:11.抽象类,接口,instanceof,类关系,克隆--003

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接口

  • 总结如何实现一个类对象的克隆?

    1. 子类实现Cloneable接口

    2. 子类重写clone方法

    3. 子类修改重写的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对象也做了克隆

    深克隆需要手动实现

那么今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值