上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页
摘要: 为继承为设计的类,任何方法中不要调用这个类其他可能被子类覆盖的方法。 构造器中决不能掉用可被覆盖的方法。 阅读全文
posted @ 2015-04-29 09:55 wangliyue 阅读(154) 评论(0) 推荐(0)
摘要: 继承是实现代码重用的有力手段,但是它并非永远是完成这项工作的最佳工具。使用不当会导致软件变得很脆弱。 在包的内部使用继承是非常安全的,在那里,子类和超类的实现都处在同一个程序员的控制之下。 对于专门为了继承而设计,并且具有很好的文档说明的类来说,使用继承也是十分安全的。 然而,对于普通的具体类,进行跨越包边界的继承,则是十分危险的。 组合:不用扩展现有的类,而是在新的类中增加一个私有域,它引用... 阅读全文
posted @ 2015-04-28 17:27 wangliyue 阅读(292) 评论(0) 推荐(0)
摘要: 不可变类只是其实例不能被修改的类。每个实例所包含的信息必须在创建该实例的时候就提供,并在对象的整个生命周期内固定不变。 JDK中已经包含了许多不可变的类,其中有String,基本类型包装类,BigInteger,和BigDecimal。 存在不可变的类的类有许多理由:不可变的类比可变类更加易于设计,实现和使用。它们不容易出错,且更加安全。 为了使类成为不可变的,需要遵循下面五条规则: 1.不要提供... 阅读全文
posted @ 2015-04-27 17:17 wangliyue 阅读(184) 评论(0) 推荐(0)
摘要: 对于一些退化类(没有什么作用,只是用来集中实例域,也可认为是Java Bean)。 如果这样的类是公有类,也就是我们希望客户端代码可以访问这些退化类的实例域,不应该直接使用public来暴漏这些数据域, 而是应该私有域和公有设值方法(setter)来代替。这样做的好处是,如果我们一旦需要改变这个退化类的内部结构,客户端 代码所受的影响最小。否则,如何客户端代码直接使用公有的数据域,这样的代码遍布各... 阅读全文
posted @ 2015-04-27 13:42 wangliyue 阅读(188) 评论(0) 推荐(0)
摘要: 要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节。 设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰的隔离开来。然后,模块之间只通过它们的API进行通信,一个模块不需要 知道其他模块的内部工作情况。这被称为信息隐藏或者封装。 由于我们实现了很好的封装,只提供若干的API供客户端代码来访问,非API涉及的类和成员,... 阅读全文
posted @ 2015-04-27 10:52 wangliyue 阅读(453) 评论(0) 推荐(0)
摘要: 与前面讨论的方法不同,compareTo()方法并没有在Object类中定义。相反,它是Comparable接口中唯一的方法。 一个类的实例对象要想是可以比较大小的,那么这个类需要实现Comparable接口,必须正确的实现compareTo()方法。 一个类实现了Comparable接口,就表明这个类的实例对象具有内在的排序关系。 一旦类实现了Comparable接口,那么这个类就可以和依赖于该... 阅读全文
posted @ 2015-04-24 17:20 wangliyue 阅读(236) 评论(0) 推荐(0)
摘要: 一个类要想实现克隆,需要实现Cloneable接口,表明这个类的对象具有克隆的功能。 Cloneable接口是一个mixin接口,它里面并没有任何的抽象方法,类似的接口有Serializable接口,表明该类的对象可以序列化。 首先应该明确通过一个对象克隆出另一个对象的概念:通过一个对象克隆出另一个对象,简称对象1和对象2,这两个对象就成为两个独立的对象, 那么对对象1做任何的修改,对象2应该不受... 阅读全文
posted @ 2015-04-24 15:44 wangliyue 阅读(736) 评论(0) 推荐(0)
摘要: Object类提供的toString()方法如下: public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 如果我们直接打印一个对象,就会调用这个对象的toString()方法,如果我们没有为该类覆盖toString()方法, 我们可以看出toStri... 阅读全文
posted @ 2015-04-23 17:15 wangliyue 阅读(306) 评论(0) 推荐(0)
摘要: Object类的hashCode方法: public native int hashCode(); 是一个本地方法。 其中这个方法的主要注释如下: Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must... 阅读全文
posted @ 2015-04-23 15:44 wangliyue 阅读(1648) 评论(0) 推荐(0)
摘要: ==是物理相等 equals是逻辑相等 因为每个类的实例对象本质上都是唯一的 ,利用物理相等(==)是指一个实例只能相等于它自己。 利用逻辑相等是(equals)指 一个实例是否和另一个实例的某些关键域相等,从而来判断这两实例是否相等。 Object类的equals方法的实现:物理相等的话就逻辑相等。 什么时候不需要覆盖Object类的equals方法? 1.希望这个类的实例只能和自身相等,... 阅读全文
posted @ 2015-04-22 17:16 wangliyue 阅读(551) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页