《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 成员被访问时发生的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值