动态绑定比静态绑定有什么好处.. 如果我们想要访问子类的方法,那么我们可以使用子类类型的引用变量来创建相同的对象....如果我们想要调用子类的方法并使用超类类型的引用变量,那么有什么好处?
class Human{
public void walk()
{
System.out.println("Human walks");
}
}
class Boy extends Human{
public void walk(){
System.out.println("Boy walks");
}
public static void main( String args[]) {
//Reference is of parent class
Human myobj = new Boy();
myobj.walk();
}
}
O/p :Boy walks
在上面的例子中 为什么我们需要使用" Human myobj = new Boy();"相反,我们可以使用" Boy myobj = new Boy();" 我的观点是为子类对象分配超类引用的用法是什么。 我真的很困惑。请帮帮我..
答案 0 :(得分:0)
您可以使用
Human myobj = new Boy();
或
Boy myobj = new Boy();
取决于您想要实现的目标。如果男孩有另外一种方法
playWithOther(Boy boy)
并且剩下的代码需要调用此方法,而不是必须使用后一版本。如果剩下的代码不需要调用任何Boy特定的方法,那么通常认为使用更通用的超类是一种好习惯。这样你就可以指出剩下的代码可以用于任何Human对象,所以简单地替换Boy with Girl
Human myobj = new Girl();
会奏效。你可以找到很多例子,例如:
java.util.List
java.util.ArrayList
java.util.LinkedList
在代码中,通常应将变量定义为java.util.List,然后实例化其中一个列表实现(或任何其他实现List接口的类)。此方法允许您在创建List对象时在单个位置更改List接口的实现。如果您使用不同的List实现,其余代码将不需要任何语法更改。