题目是这样的,下面作为继承 A class的subclass,那个是对的。 选择两个选项
import java util.*
pubilc class A {
public List<Number> test(set<CharSequence> s) {
return null;
}
答案有
A. public ArraList<Integer> test( set<String> s ) { ... }
B. public List<Integer> test(TreeSet<String> s ) { ... }
C. public List<Integer> test(set<String> s ) { ... }
D. public List<Object> test( set<CharSequence> s ) { ... }
E. public List<Integer> test (set <CharSequence> s ){ ... }
F. pubilc ArrayList<Number> test(Set<CharSequence> s ) { ... }
一看到这样的题就有点儿懵逼,希望大神给个好的解题思路。感谢
BF
这道题应该问的是子类继承父类,子类重写父类的方法哪一个是对的,重写要注意方法名,传入数据类型,返回数据类型
重写必须保持参数列表一致。所以只有DEF可能是重写。
重写的返回类型要与父方法一致或者更小,这个规则不能应用于泛型(网上搜搜看 不一样的泛型相当于两种类型)。所以只有F
--------------------
AC的参数类型直接会和Set<CharSequence>冲突 无论重写还是重载都是非法的。
首先Set<String> 和 Set <CharSequence>是两种无关的类型,只能认为是重载。
但是如果传入一个没有指定泛型的类型,又无法判断要调用哪个方法。所以都不满足
-----------------------
B的参数决定其是重载(参数列表不同,方法名一致,返回类型就无所谓了),所以是合法的。