zoukankan      html  css  js  c++  java
  • 复用类

    1. 组合语法 将对象引用置于新类中即可.初始化组合对象的方式有
      • 在定义处,可以保证在构造器执行前初始化
      • 构造器中
      • 惰性初始化,只在要使用时初始化
      • 使用实例初始化
    2. 继承
      继承时会自动获得父类所有的域和方法

    基类初始化,基类构造器会在子类构造器调用之前调用,若是基类不存在无参数默认构造器,则需要通过super显式调用基类构造器

    1. 代理,使用方法暴露子对象的接口

    确保正确清理

    将清理方法放在final中,最好编写自己的清理方法,不要使用finalize()

    名称屏蔽

    子类会拥有所有父类的重载函数,切都可以调用

    向上转型

    子类可以向上转型变为基类,因为子类的接口一定大于等于基类

    final关键字

    指定数据不可变,若是修饰引用则表明引用指向的对象不能变,但是对象自身可以被修改

    static的final常量只会在类加载时初始化一次

    非static的final会在每次对象创建时初始化.

    final的基本类型常量为编译时常量 会被编译器优化.

    final参数指参数不可更改.空白final,可以不指定初始值,但一定要在使用前初始化,使其与对象绑定,同类的不同对象拥有不同的值.

    final方法指 方法锁定不能被覆盖.java初期也会使用final方法进行效率优化,因为早期java实现中可能会将final方法的调用转为内嵌调用,但后来已经被废除,因为可能方法太大导致内嵌调用会带来效率下降的问题,新的hotspot技术会负责效率问题.

    final类不可被继承,所有的方法隐式指定为final.

    初始化及类的加载

    java类的代码只有在初次使用时才会加载

    类的初始化过程: 当运行某个类时,试图访问它的main方法,当发现有基类时会先加载基类.一直加载到最根部的基类,然后从根开始进行static初始化.到达本身后开始进行对象的创建,先是将对象内存全部设置为0,然后递归调用基类构造器,最后进行构造器剩余部分.

    总结

    继承复用的是接口,组合复用的是旧类.

    除非你需要新的类可以向上转型,否则一般应优先使用组合.

    每个类都应该有特定用途,不应该太大,如果一个类很大就要考虑将该类分成多个小类.

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





  • 相关阅读:
    python class属性
    获取安卓系统日志输出
    深入理解C#中的IDisposable接口(转)
    Mac开启自带的Apache服务器
    【转】《Unity Shader入门精要》冯乐乐著 书中彩图
    AssetDatabase的方法总结
    C# 读写XML文件的方法
    tkinter模块常用参数(python3)
    Unity在Project视图里面显示文件的拓展名
    Git忽略提交规则
  • 原文地址:https://www.cnblogs.com/renluxiang/p/2e3b7b2a181a36166d04f5b0a7f57cc2.html
Copyright © 2011-2022 走看看