重载是在编译时考虑的;覆盖在执行时考虑。
时间戳 重载
after,它不会 覆盖 现有方法-
因此您
oneDate.after(twoDate)只考虑了中的方法
java.util.Date;
而且即使你使用
one.after(twoDate)它会 仍然
只使用
after(Date)因为编译时类型
twoDate是
Date不是
Timestamp。
如果你打电话
one.after(two),然后 说 会用
Timestamp.after(Timestamp)。
Date.after(Date)仅考虑毫秒-但
Timestamp仅将整数秒传递给的构造函数
Date,因此即使您将不同的值传递给构造函数
oneDate,
twoDate也具有相等的毫秒值
Date。
值得在文档中
Timestamp注意这一点:
由于上述Timestamp类和java.util.Date类之间的差异,建议代码不要以java.util.Date的实例的形式一般性地查看Timestamp值。Timestamp和java.util.Date之间的继承关系实际上表示实现继承,而不是类型继承。
老实说,听起来我对继承的使用非常差-但是Java有很多这样的:(



