[英]Overriding equals method by a abstract class and set it as abstract so if any class extends, they must implement
我正在嘗試構建一個抽象類/接口來覆蓋已經存在的方法,並將它們設置為抽象方法。 這可能嗎?
代碼示例:
public abstract class Box {
@Override
public abstract boolean equals(Object o);
}
要么
public interface Box {
@Override
boolean equals(Object o);
}
上面的類和接口都應該具有相同的功能,但這是否意味着這兩個對象都覆蓋了equals方法? 即使我將其設置為抽象?
所以這項工作:
public class Tea extends Box {
@Override
public boolean equals(Object o) {
// TODO Auto-generated method stub
return false;
}
}
首先,接口不會覆蓋方法。 因此,您不能通過向接口添加equals
方法來從Object
覆蓋equals
。 相反,可以將接口視為契約,它們保證實現它們的任何非抽象類都將具有所有接口方法(直接或通過繼承)。
關於通過繼承使方法抽象的方法,實際上可以做到這一點。 因此,您在抽象Box類中使用抽象定義覆蓋equals
方法的示例將導致擴展Box
任何類都必須實現equals
方法。
就像@OskarEmilsson所評論的那樣,如果您這樣做,則還應該強制執行hashCode
,因為equals和hashCode應該彼此一致(相等的對象必須具有相等的hashCodes)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.