1700454800
1700454801
}
1700454802
1700454803
}
1700454804
1700454805
这个类非常简单,就是把HashMap转换为Collection集合类型,然后再定义一个子类,源代码如代码清单2-12所示。
1700454806
1700454807
代码清单2-12 子类源代码
1700454808
1700454809
public class Son extends Father{
1700454810
1700454811
//放大输入参数类型
1700454812
1700454813
public Collection doSomething(Map map){
1700454814
1700454815
System.out.println(“子类被执行……”);
1700454816
1700454817
return map.values();
1700454818
1700454819
}
1700454820
1700454821
}
1700454822
1700454823
请注意粗体部分,与父类的方法名相同,但又不是覆写(Override)父类的方法。你加个@Override试试看,会报错的,为什么呢?方法名虽然相同,但方法的输入参数不同,就不是覆写,那这是什么呢?是重载(Overload)!不用大惊小怪的,不在一个类就不能是重载了?继承是什么意思,子类拥有父类的所有属性和方法,方法名相同,输入参数类型又不相同,当然是重载了。父类和子类都已经声明了,场景类的调用如代码清单2-13所示。
1700454824
1700454825
代码清单2-13 场景类源代码
1700454826
1700454827
public class Client{
1700454828
1700454829
public static void invoker(){
1700454830
1700454831
//父类存在的地方,子类就应该能够存在
1700454832
1700454833
Father f=new Father();
1700454834
1700454835
HashMap map=new HashMap();
1700454836
1700454837
f.doSomething(map);
1700454838
1700454839
}
1700454840
1700454841
public static void main(String[]args){
1700454842
1700454843
invoker();
1700454844
1700454845
}
1700454846
1700454847
}
1700454848
1700454849
代码运行后的结果如下所示:
[
上一页 ]
[ :1.7004548e+09 ]
[
下一页 ]