2015-04-07 62 views

回答

2

方法规范:当然,它指的是方法的名称能见度参数及其类型和方向(输入/输出),返回值和可能抛出异常

方法合同:这是预期的行为前提后置该方法执行时。

例如:Java中的方法Object.equals有这个规范

public boolean equals(Object obj) 

...和合同这个,作为其公共文件的规定:

指示是否有些其他对象是“等于”这一个。

equals方法实现上非空 对象引用的等价关系:

自反性:对于任何非空引用值x,x.equals(x)的应返回true。 它是对称的:对于任何非空引用值x和y,当且仅当y.equals(x)返回 为true时,x.equals(y)才返回true。 它是传递性的:对于任何非空引用值x,y和z,如果x.equals(y)返回true并且y.equals(z)返回true,那么x.equals(z)应该返回true。 它是一致的:对于任何非空引用值x和y,的x.equals(y)的多个调用始终返回true或 始终返回false,没有设置中使用的信息等于在对象上 比较被修改。 对于任何非空引用值x,x.equals(null)应该返回false。

的等于Object类方法实现对象最挑剔 可以等价关系;也就是说,对于任何非空 引用值x和y,当且仅当x 和y引用同一对象(x == y的值为true)时,此方法返回true。

注意,这是通常需要覆盖hashCode方法 每当这个方法被覆盖,以便维持对hashCode方法,其中指出,等于对象必须 具有相等的哈希码的一般 合同。