Java暑期学习第十五天日报

一、今日学习内容:

今天学习了5.5的内容和5.6的综合实例。

二、遇到的问题:

 没有遇到什么问题。

三、明日计划:

明天计划练习5.8的课后习题。

 

今天进行的具体内容:

1.abstract关键字

(1)抽象类

由abstract关键字修饰的类叫抽象类,抽象类必须由子类继承才能实例化对象。

抽象类中的方法 抽象方法
具体方法

 

 

 

抽象类的定义形式:abstract class 类名{ }

 

(2)抽象方法

由abstract修饰的方法称为抽象方法,其中抽象方法必须在抽象类中,且在抽象类中对抽象方法只进行声明,其方法体在子类中。若需要使用这些方法,需要由子类实现。

public abstract class student2 {
    protected abstract void test();
    public static void main(String[]args) {
        student3 s=new student3();
        s.test();
        
    }
}
class student3 extends student2{
    @Override
    public void test() {
        System.out.println("test方法!");
    }
}

另外需要注意的是抽象类无法被实例化。

 

抽象类和抽象方法总结 抽象类中既含有抽象方法,也有非抽象方法
含有抽象方法的类一定是抽象类
抽象类中不一定含有抽象方法

 

 

 

 

 

2.综合实例——选择题

 其中设置Question为父类,单项选择题和多项选择题分别是子类。

package atm;
import java.util.Arrays;
public class Question {
    public String text;   //题目文本
    public String[] options;  //选项
    public void print() {
        System.out.println(this.text);
        for(int i=0;i<options.length;i++) {
            System.out.println(options[i]+"\t");
        }
    }
    public boolean check(char[] answers) {
        return false;
    }

}
class singleQuestion extends Question{
    char answer;  //标准答案
    public singleQuestion(String str,String [] opt,char ans) {
        this.text=str;
        this.options=opt;
        this.answer=ans;
    }
    public boolean check(char[] answers) {
        if(answers==null||answers.length!=1)
            return false;
        return this.answer==answers[0];
    }
}

class multiQuestion extends Question{
    char [] answer;  //标准答案
    public  multiQuestion(String str,String [] opt,char [] ans) {
        this.text=str;
        this.options=opt;
        this.answer=ans;
    }
    public boolean check(char[] answers) {
        return Arrays.equals(answers,this.answer);
    }
    
}


package atm;
import java.util.*;
public class PersonDemo {
    public static void main(String[] args) {
        Question []paper= {null,null};
        paper[0]= new singleQuestion("如何买火车票靠谱?",new String [] {"A.电话","B.黄牛","C.画的"},'A');
        paper[1]= new multiQuestion("谁是歌手?",new String[] {"A.刘德华","B.张学友","C.孙悟空","D.周杰伦"},new char[] {'A','B','D'}) ;
    
    Scanner sc=new Scanner(System.in);
    for(int i=0;i<paper.length;i++) {
         paper[i].print();
         System.out.println("请选择:");
         String s=sc.nextLine();
        char [] answers=s.toCharArray();  //将字符串转换为字符数组
        if(paper[i].check(answers)) {
            System.out.println("答案正确!\n");
        }
        else
            System.out.println("答案错误!\n");
        
            
    }
    }

}

测试截图:

 

posted on 2020-07-20 20:42  桑榆非晚柠月如风  阅读(202)  评论(0编辑  收藏  举报