• Java编程思想:第7章 复用类


    复用代码是Java众多引人注目的功能之一。但仅仅能复制代码并对之加以改变是不够的,还需要做更多的事情。

    复用代码的两种形式:

    1.组合,新类中产生现有类对象

    2.继承,用现有类型创建新类型

    7.1组合语法

    7.2继承语法

    7.2.1初始化基类

    当创建了一个导出类的对象时,该对象包含了一个基类的子对象。这个子对象与你用基类直接创建的对象是一样的(Java会自动在导出类构造器里插入对基类构造器的调用,基类只含带参构造需要自己用super调用,不可省略),二者区别在于继承时基类的子对象包装在导出类对象内部,而直接创建来与外部。

    7.3代理

    代理:第三种关系,Java没有对它的直接支持,继承和组合之间中庸之道。

    实现代理:把一个成员对象放在代理类中(就像组合),同时在新类中暴露了这个对象的所有方法(就像继承)。

    7.4结合使用组合和继承

    7.4.1确保正确清理

    除了内存之外,不能依赖垃圾回收器去做任何事。如果需要清理,最好是编写自己的清理方法(子类清理方法和父类清理方法调用顺序按照创建反序来执行),在该对象使用结束之后,用finally{}子句调用清理方法,不要使用finalize()。

    7.4.2名称屏蔽

    子类可以对基类方法进行覆盖,重载。利用@override注解可以防止在想覆盖时意外写成了重载

    7.5在组合与基础之间选择

    继承:is-a

    组合:has-a

    7.6protected关键字

     提供子类和同包的访问权限

    7.7向上转型

    为新类型提供方法,并不是继承技术中最重要的方面,最重要的是新类和基类之间的关系,这种关系可以用”新类是现有类的一种类型“来表示。

    7.7.1为什么称为向上转型

    7.7.2再论如何选择组合与继承

    问一问自己是否需要从新类向基类转型,需要用继承,否则尽可能不要用

    7.8final关键字

    参照 Java final 关键字 & 参数传递特点

    7.9初始化及类的加载

    Java中类的加载在初次使用时发生,通常是创建对象或者访问static方法(构造器也算是static方法,只是隐式的)。

    7.9.1继承与初始化

     参照 Java 类加载、调用构造器、执行方法的过程

    7.10总结

    组合和继承都可以产生新类型。组合一般是把现有类型作为新类型实现的一部分加以复用,而继承是复用已有类型的接口。

  • 相关阅读:
    JAVA泛类型(汽车Demo)
    java自定义事件机制分析
    ExtJS自定义事件
    模块化设计进化
    面向服务的SOA架构与服务总线ESB
    数据加密数字签名
    面试题
    一点ExtJS开发的感悟
    学习代理模式
    抽象类与接口
  • 原文地址:https://www.cnblogs.com/superzhao/p/4807859.html
Copyright © 2020-2023  润新知