package basic.day09; import java.util.Scanner; import java.util.Arrays; public class PaperDemo { public static void main(String[] args) { //paper 考卷, 考卷是选择题的集合(数组) //选择题有两种, 可以是单选题, 也可以是多选题 // 具体的题目是多态(多种多样)的! Question[] paper = {null, null};//new Question[2]; //父类型变量可以引用子类型实例 paper[0]=new SingleQuestion("如何买火车票靠谱?", new String[]{"A.电话","B.网上","C.黄牛","D.画的"}, 'A'); paper[1]=new MultiQuestion("那几位是达内老师?", new String[]{"A.宁丽鹃","B.刘苍松", "C.程祖红", "D.孙悟空"}, new char[]{'A','B','C'}); Scanner console = new Scanner(System.in); for(int i=0; i<paper.length; i++){ Question q = paper[i];//q代表考卷上的每道题, q.print();//打印试题 本质 print(q) System.out.print("请选择:"); String str = console.nextLine();//等待用户答案 char[] answers = str.toUpperCase().toCharArray();//转换答案为数组 //方法是动态绑定到对象, 有具体对象决定执行那个方法 //Java在编译期间按照类型检查语法(属性/方法), 执行期间 //调用对象的方法, 这种现象叫方法的"动态绑定" // 覆盖的方法执行是多态的 Arrays.sort(answers); if(q.check(answers)){//检查用户答案 System.out.println("给力呀!"); }else{ System.out.println("亲, 要努力呀!"); } } } }