Java学习第18天
一、今日学习内容:
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"); } } }
二、问题
如果子类也设置成抽象类会出现问题
三、明天写这一章的题

浙公网安备 33010602011771号