我对动态绑定和静态绑定感到困惑.我已经读过在编译时确定对象的类型称为静态绑定,在运行时确定它称为动态绑定.
以下代码中会发生什么:
静态绑定还是动态绑定?
这显示了什么样的多态性?
class Animal
{
void eat()
{
System.out.println("Animal is eating");
}
}
class Dog extends Animal
{
void eat()
{
System.out.println("Dog is eating");
}
}
public static void main(String args[])
{
Animal a=new Animal();
a.eat();
}
Run Code Online (Sandbox Code Playgroud) 我正在学习编程语言的课程,"什么时候是一个函数是另一个函数的子类型"的答案对我来说非常反直觉.
澄清一下:假设我们有以下类型关系:
bool<int<real
Run Code Online (Sandbox Code Playgroud)
为什么函数(real->bool)是子类型(int->bool?不应该是相反的方式吗?
我希望子类型函数的标准是:如果f2可以采用f1可以采用的任何参数,则f1是f2的子类型,并且f1仅返回f2返回的值.显然有f1可以采用的值,但f2不能.
我试图通过维基百科阅读,但它在多态性(特别是与Java相关)的主题上是如此密集.我的理解是亚型多态与子类型有关,参数多态与在不同对象/类之间推广的方法有关吗?我错过了什么?