第七章 复用类


在这里插入图片描述

1.组合语法
  1. 定义:只需要在新类中产生现有类
  2. 惰性初始化:先定义引用,在使用对象的时候再进行初始化
2.继承语法
  1. 定义:按照现有类类型创建新类

  2. 初始化基类

    (1) 除非明确指出从其他类继承,否则就是在隐式的从Java的标准类Object进行继承
    (2) extends会自动得到基类中的所有域和方法
    (3) 为了继承,一般数据成员都是Private,方法是Public
    (4) 可以将继承视作是对类的复用
    (5) super表示超类的意思,当前类就是从超类继承来的
    (6) Java会自动在导出类构造器中插入基类构造器
    (7) 构造过程是“向外”扩散的,所以在导出类访问到积累之前,就已经完成了初始化
    (8) 基类构造器总是被调用,并且在基类之前被调用
    (9) 如果要调用有参的基类构造器,就要使用Super()关键字显示的调用基类构造器,并配以适当的参数列表

3.代理
  • 在新类中,通过创建目标类对象在新类的方法中调用目标类的一些方法,以此方式不暴露目标类的方法
4.结合使用组合和继承
  1. 确保正确清理

    (1) 先执行类的清理方法,再执行基类的执行方法
    (2) 最好除了内存意外,不依赖垃圾回收器,但不要使用finalize()

  2. 名称屏蔽

    (1) 无论在本类中还是在基类中,重载机制都可以正常工作
    (2) @Override可以防止你在不想重载的时候不小心重载(报错:method dose not override a method from its superclass)

5.在组合和继承之间选择
  1. 组合:现在新类中使用现有类的功能,而非它的接口(has-a)
  2. 继承:使用某个现有类,并为了某种特殊需求而将其特殊化(is-a)
6.Protected关键字
  • 对于任何继承此类或位于同一包内的类来说是可以访问的,但对于类用户来说是Private的
7.向上转型
  1. 新类是现有类的一种类型

  2. 将新类引用转换成现有类引用的动作,叫做向上转型

  3. 为什么称为向上转型

    (1) 由导出类转向通用类转型,在继承图上是向上移动的
    (2) 因为是从专用类转型通用类,所以是安全的
    (3) 类接口唯一会发生的就是丢失方法

  4. 应该用组合还是继承?

    (1) 如果必须向上转型,就要用继承
    (2) 如果不需要向上转型,就不需要继承

8.Final关键字
  1. final数据

    (1) 一个永远不改变的编译时常量
    (2) 一个运行时被初始化的值,而你不希望它被改变
    (3) static final的域只占用一段不能改变的存储空间
    (4) 带有恒定初始值(编译期常量)的 static final 基本类型全用大写字母命名,且字与字之间用下划线隔开
    (5) 使引用成为final没有使基本类型成为final的作用大
    (6) 空白final

    ​ 声明为final,但是未给定初始值

    (7) final参数

    ​ Java允许在参数列表中声明的方式将参数指明为final(你可以读参数,但是不能修改参数)

  2. final方法

    (1) 锁定方法

    ​ 以防任何继承的方法修改它的含义

    (2) 效率

    ​ 把方法加上final关键字,就意味着同意编译器针对这个方法的所有调用转为内嵌调用

  3. 类中所有的private方法都隐式的指定为final

  4. “覆盖”只有在某方法是基类的接口的一部分时才会出现

  5. final类

    ​ 当某个类被定义为final的时候,表明无法被继承

9.初始化及类的加载
  1. 构造器是static的

  2. 加载类的动作只执行一次

  3. 继承于初始化

    (1) 访问main方法
    (2) 加载器启动,找出类的编译代码(.class文件)
    (3) 若发现其类为导出类(有基类),先生成基类的对象
    (4) 根基类的static初始化,然后是下一个导出类(因为导出类的static可能依赖基类成员)
    (5) 对象中所有基本类型被赋初值,对象赋null
    (6) 基类构造器被调用
    (7) 实例按次序被初始化
    (8) 构造器其余部分被执行

  • 26
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进阶的小名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值