《JAVA编程思想》阅读笔记 第7章 复用类

编译器并非为每一个引用都默认创建对象,以减少不必要的开销。一种初始化方式是,在使用对象前再初始化,称为惰性初始化

即使一个类不是 public 类型,其 public main() 方法仍可被访问。

继承的一般规则:数据成员指定为 private,方法为 public。对于基类子对象的正确初始化,是通过在构造器中调用基类构造函数来执行的,java会自动加载基类的构造函数,确保在使用子类对象前基类对象完成初始化。

对于没有默认构造函数或者想使用带参数的构造函数的情况,必须使用 super 关键字进行显示地调用。此时如果不用 super 进行手动调用,编译器将无法找到构造函数(此种情况下,调用编译器是首要工作)。

在清理对象的方法中,要注意首先执行类的特定清理动作,顺序与生成顺序相反,最后再调用基类的清理方法。

而如果需要手动清理垃圾时,最好的方式是除了内存外,不依赖垃圾回收器处理任何对象,而是编写自己的清理方法。

在子类中引入新的重载方法并不会屏蔽掉已有的方法。

向上转型:子类对象转化为父类对象(在子类方法中用父类调用方法,其实质是,子类对象也是一种父类的对象,所以等同于传递子类对象),可能发生方法丢失。

java 允许将参数列表的参数指明为 final,意味着无法更改参数指向的对象。在旧版本java中,将方法设置为 final 有一个作用是,编译器会将声明为 final 的方法的所有调用转为内嵌调用。编译器发现 final 方法时,会根据自己的判断,跳过插入程序代码的步骤而执行方法调用机制(将参数压入栈,跳到方法代码处执行,之后跳回并清理栈中参数,处理返回值),并以实际代码的副本代替调用。借此节省调用消耗的时间。但如果代码过于膨胀,提高的性能就会由于花费在方法上的时间过多而被抵消(新版本中已经全部交由jvm处理)。

类中所有 private 方法都隐式地指定为 final 类型,因为无法取用,所以无法覆盖。因此为 private 方法添加 final 关键字没有任何意义。而由于 private 方法被隐藏在类的内部,所以如果出现与 private 方法同名但访问权限不同的方法,并不会出现覆盖的情况,仅仅是等同于定义了一个新的方法而已。

由于 java 最初的几个版本并没有考虑到类库被继承使用的情况,所以涉及存在问题。现今的版本中,容器库用 ArrayList 替代了 Vector,HashMap 代替了 HashTable。建议要慎重使用 final。

java 中每个类的编译代码的都在自己的独立文件中,只有在需要使用时才会被加载。需要注意的是,构造方法也是 static 类型,也就是说类的加载是在其任意 static 成员被访问时发生的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值