Java编程思想简要笔记——第七章 复用类

组合

只需将对象引用置于新类中即可。显示的在新类中嵌入某对象,有助于理解部件的组成部分。

继承 extends

Java会自动在导出类的构造器中插入对基类构造器的调用。使用某个现有类,并开发一个他的特殊版本。
构造器的调用顺序:基类->导出类
但默认调用只调用其无参的构造方法,想要调用其带参数的构造法需要用super关键字。

代理

将一个成员对象置于所要构造的类中,同时在新类中暴露该成员对象的所有方法。

结合使用组合和继承

  1. 确保正确清理:用try-finally处理,一定不能用finalize
  2. 名称屏蔽:子类重载父类方法时,可以新增重载方法。当子类重载方法与父类方法返回值相异时,编译时就会报错。
  3. 如果必须向上转型,则继承是必要的,如果不需要,则应当好好考虑自己是否需要继承。

protected 专为继承而生

对类用户而言是private的,对导出类而言是public的
最好实现:private修饰域,用protected方法访问。
这里想到一个编码规范要求"在构造方法内不应调用可被覆写的方法"需要牢记。

final——这是不可改变的

final常量

  1. 永远不改变的编译时常量
  2. 运行时被初始化的值,而且你不希望他被改变

final修饰对象,对象可改变,但是对象引用不能改变,只允许一次初始化,可以存在空白final。

final参数

无法在方法中更改参数引用所指向的对象,主要用来向内部匿名类传递数据。

final方法

  1. 把方法锁定,以防任何继承类修改它的含义,确保继承时保持不变且不会被覆盖。
    疑问:父类final private的方法子类能够覆写么?
    答:可以同名重写,但这个不是覆写,因为private方法本身对子类不可见,不存在覆写的概念。
  2. 提高效率,编译时直接将final方法嵌入到代码中,减少了调用开销,但同时会使编出的包体积膨胀。Java6后就不推荐使用了。

final类

final类的所有方法、域都是final的

初始化及类的加载

  1. 类的代码在初次使用时才会被加载
  2. 访问static域或方法时才会被加载
  3. 加载顺序:
    静态域:基类->导出类
    构造方法:基类->导出类
发布了20 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/kiba_zwei/article/details/104136406
今日推荐