下面这段代码应该输出几呢? 为什么?
import java.util.*;
import java.lang.reflect.*;class Food{
private Object ingredient; public Object getIngredient(){
return ingredient;
} public void showDescription(){ }}class Sausage extends Food{
private ArrayList ingredient; public ArrayList getIngredient(){
return ingredient;
} public void showDescription(){
System.out.println("I'm very delicious!");
}
}class Test{ public static void main(String[] args) throws Exception{
Method[] ms = Sausage.class.getDeclaredMethods();
System.out.println(ms.length);
}
}
import java.util.*;
import java.lang.reflect.*;class Food{
private Object ingredient; public Object getIngredient(){
return ingredient;
} public void showDescription(){ }}class Sausage extends Food{
private ArrayList ingredient; public ArrayList getIngredient(){
return ingredient;
} public void showDescription(){
System.out.println("I'm very delicious!");
}
}class Test{ public static void main(String[] args) throws Exception{
Method[] ms = Sausage.class.getDeclaredMethods();
System.out.println(ms.length);
}
}
父类是不会被统计进去的...错误的重载导致反射取得的方法有3,
其中两个getIngredient,一个showDescription也不知道为什么会有两个getIngredient..求高手解答...
如果子类重写的 返回值 instanceof 父类的 返回值,编译可以通过。是不是这样就算完全重写?重写好像规定,参数,方法名,甚至抛的异常都必须相同,要么有,要么抛相同的异常。至于返回值,大概也要相同,才算完全覆盖?
所以我认为返回3不怎么奇怪,奇怪的是这个编译问题。求大牛解释。。