问个基础问题
public interface IPO{
public abstract boolean equals(Object o);
public abstract int hashCode();
}
public class TestInterface implements IPO{ } 为什么上面这段代码编译没问题,而下面这个却不能编译? public abstract class APO{
public abstract boolean equals(Object o);
public abstract int hashCode();
}
public class TestAbstract extends APO{ } 起初我对第一段代码能通过编译感到奇怪,后来给自己的解释是:TestInterface会自动调用Object的equals和hashCode方法。
可是换成抽象类,这解释好像又不通了。
public interface IPO{
public abstract boolean equals(Object o);
public abstract int hashCode();
}
public class TestInterface implements IPO{ } 为什么上面这段代码编译没问题,而下面这个却不能编译? public abstract class APO{
public abstract boolean equals(Object o);
public abstract int hashCode();
}
public class TestAbstract extends APO{ } 起初我对第一段代码能通过编译感到奇怪,后来给自己的解释是:TestInterface会自动调用Object的equals和hashCode方法。
可是换成抽象类,这解释好像又不通了。
解决方案 »
- 大家来找茬,题目很简单但是问题出在哪呢
- java新手 请大家帮我看一个代码段与函数间的同步问题
- 怎样统计一个字符串中哪个字符出现的频率最高
- 参数 g 不是null值吗? 怎么可以调用方法?
- 一个关于SimpleDateFormat.parse的问题 快帮我看看 谢谢了
- 200分求助:SWT中定制TreeView的问题。(解决后,另开贴送分)
- Think in Java 第三版 VS J2SE5.0
- 请教:我下载的jdk1.4.2怎么是"LVaA==&GroupName=EedEWQ=="呢?
- 关于web方式下打印的问题!高手赐教!
- Eclipse使用 问题
- 学习的范例,swing+mysql+tomcat 做的完美结合程序。用户名: xudeliang 密码:xudeliang
- 各语言汇编后的可运行程序,在内存中的数据结构相同吗?
第一个可以这样解释 ,TestInterface会自动调用Object的equals和hashCode方法。
也就是你的父类Object帮你实现了
public abstract boolean equals(Object o);
public abstract int hashCode();第2个 :
public abstract class APO{
public abstract boolean equals(Object o);
public abstract int hashCode();
}
APO的这2个方法是覆盖Object中的 equals()和 hashCode();
所以当 :
public class TestAbstract extends APO{ }
由于java中的类是单一继承,所以TestAbstract只能继承父类APO
由于父类是抽象类,如果不实现父类中的抽象方法,那么也应该声明为
abstrcat的
应该改为:
public abstrcat class TestAbstract extends APO{ }
或者:
public class TestAbstract extends APO{
public boolean equals(Object o){
..............
}
public int hashCode(){
.............
}
}
因为APO已经重写了object的这两个方法,所以子类也要实现了
金山-矿工(27362xxxx) 19:12:13
它是class啊我就明白了。同时谢谢2楼。