问个基础问题
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方法。
可是换成抽象类,这解释好像又不通了。
解决方案 »
- 关于SocketChannel.write的一些问题
- List 重新组合 报表相关问题???????????急急急急急急
- 打包后如何读取包中的文件
- JAVA做界面问题
- 请教高手,new 一个 java.util.List,内存开销由多大呢?
- 怎样用javax.mail发邮件?
- 想做一个小程序,自动在网页上填写东西
- 求问:一个关于如何写升降序排列的代码编写问题?
- 给我段程序
- visibroker调试出错“unable to load any jvm”释疑
- 学习的范例,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楼。