我知道,在处理Java中的多态性时,可以为对象指定与对象类型不同的声明类型。例如:Java中具有不同引用类型的对象类型的优点是什么?
Parent foo = new Child();
我主要是看到它时声明的类型是一个接口,如:
Map<Integer,BigInteger> memo = new TreeMap<Integer,BigInteger>();
我这看到了很多在人们的Java代码。当它是一个Child对象时,将foo声明为Parent有什么好处?我也明白,如果我们这样做,foo不能再调用任何未在Parent中声明为抽象或定义的方法。令我感到困惑的是,当我们可以同时拥有声明和实际类型的Child并且仍然将其作为参数传递给需要Parent参数对象的方法时,我看到了这一点。例如:
Child fooNew = new Child();
public void showObj(Parent o){
System.out.println(o); }
showObj(fooNew);
那么是什么给?在什么情况下为对象设定不同的声明和实际类型会有好处?我的书说它对泛型编程很重要,但没有解释。我看到它始终如一地使用,但毫无头绪。它甚至似乎有其自身的一些缺点。
从Oracle了解孩子:http://docs.oracle.com/javase /tutorial/java/generics/why.html – 2014-10-01 04:37:29
@ScaryWombat原理是一样的。 – ajb 2014-10-01 04:37:50
当父母有多个孩子覆盖一个或多个父母方法时,这是有意义的。您可以将不同子项的实例放入由父类型定义的某些集合中,并且在调用重写方法时,JVM将为每个子实例适当地调用此方法。 – 2014-10-01 04:38:45