Java中的静态/动态绑定

时间:2018-03-18 20:42:20

标签: java compilation dynamic-binding static-binding

我确实有class Person, class StudentStudent extends Person。据我所知,静态绑定有以下几点:

class Person {
   talk(Person p) {
      print("Hi by person.");
   } 
}

class Student extends Person {
   talk(Student s) {
      print("Hi by stud.");
   }
}

现在,如果我实例化并调用方法:

Person x = new Student();
talk(x);                      
// output: "Hi by person." because of static binding, am I right?

我的问题: 如果class Student只有方法talk(Student s),该怎么办?现在我打电话给talk(x)。由于我通常应该从talk()获取class Person方法,所以当没有这样的方法时会发生什么?

编辑:我试图运行它,它给了我一个编译错误。好的,但为什么会这样呢?我了解到编译器将首先转到子类并搜索该方法,如果它在那里,那么它会被执行吗?

1 个答案:

答案 0 :(得分:0)

不存在重载方法的动态绑定......

和学生是一个人,因此调用人物的方法谈话