-1

我有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,那么当没有这种方法时会发生什么?

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

4

1 回答 1

0

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

和 Student 是一个 Person 所以方法从 Person 调用

于 2018-03-18T20:54:18.453 回答