我在某处读过运行时多态性是langugages中动态类型的结果.通过检查下面的代码,我们可以看到运行时多态的一个明确的例子.
class A{
do(){}
}
class B extends A{
do(){}
}
...
A ex = new B();
ex.do();
Run Code Online (Sandbox Code Playgroud)
由于存在超类类型引用,编译器无法确定实际引用哪个类型引用并在运行时绑定方法.但是下面的用法与相同的类定义有什么关系呢?
我的第一个问题是下面的例子;
class A{
do(){}
}
class B extends A{
//no overriding
}
...
A ex = new B();
ex.do();
Run Code Online (Sandbox Code Playgroud)
层次结构中只有一个版本的方法do().系统是否仍在等待运行时绑定方法?还是在编译时绑定?
我的第二个问题是下面的例子;
class A{
do(){}
}
class B extends A{
do(){}
}
...
B ex = new B();
ex.do();
Run Code Online (Sandbox Code Playgroud)
现在有子类(继承链中最低)类型引用.它会在运行时绑定吗?
public class Author {
private int id;
private String name;
private String university;
private String department;
private String email;
private int article1;
private int article2;
private int article3;
private int article4;
private int article5;
//constructors and getter/setters are generated automatically, not adding to have space
}
Run Code Online (Sandbox Code Playgroud)
这是我的作者类.该类仅具有这些属性.我还readDaFile创建了一个用于读取author.txt和创建作者对象的类.
import java.util.Scanner;
import java.io.*;
public class readAuthor {
private Scanner reader;
private String temp;
private String[] split;
public Author[] authorList;
private int dummyInt,dummyArticle1=0 ,dummyArticle2=0 ,dummyArticle3=0,dummyArticle4,dummyArticle5;
private int i=0;
private …Run Code Online (Sandbox Code Playgroud)