java笔记

Java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是后期绑定。这意味着通常情况下,我们不必判定是否应该进行后期绑定---它会自动发生。

为什么要将某个方法声明为final呢?正如前一章提到的那样,它可以防止其他人覆盖该方法。但更重要的一点或许是:这样做可以有效地"关闭"动态绑定,或者说,告诉编译器不需要对其进行动态绑定。这样,编译器就可以为final方法调用生成更有效的代码。然而,大多数情况下,这样做对程序的整体性能不会有什么改观。所以,最好根据设计来决定是否使用final,而不是出于视图提高性能的目的来使用final

 Java中所有方法都是通过动态绑定实现多态

在导出类中,对于基类中的private方法,最好采用不同的名字

 

万一某个子对象要依赖于其他对象,销毁的顺序应该和初始化顺序相反,对于字段,则意味着与声明的顺序相反(因为字段的初始化是按照声明的顺序进行的)。对于基类,应该首先对其导出类进行清理,然后才是基类。这是因为导出类的清理可能会调用基类的某些方法,所以需要使基类中的构件仍起作用而不应过早的销毁它们。

 

编写构造器时有一条有效地准则:“用尽可能简单的方法使对象进入正常状态;如果可以的话,避免调用其他方法”。在构造器内唯一安全调用的那些方法是基类中的final方法(也适用于private方法,它们自动属于final方法)。这些方法不能被覆盖,因此也就不会出现上述令人惊讶的问题。

构造方法不具有多态性(它们实际上是static方法,只不过该static声明是隐式的)

 接口也可以包含域,但是这些域隐式地是public,static和final的,且必须是这些

 接口中的方法默认是public的,所以实现类中的方法只能被声明为public的(实现类或子类的具体方法或重写方法访问级别必须比接口或父类中的访问级别大或一样)

LinkedHashSet和LinkedHashMap内元素按放入的顺序排序;HashSet和HashMap则使用特殊的算法来控制顺序,看起来像是无序的;

 switch语句: Only convertible int values, strings or enum variables are permitted(选择因子必须是int, 字符串或者枚举), 不能是其他类型如boolean, float, double

posted @ 2015-04-16 10:00  挨踢淫才  阅读(143)  评论(0编辑  收藏  举报