学习内容:
1、abstract关键字
abstract是抽象的意思,使用abstract修饰类,叫做抽象类。抽象类 中既有抽象方法也有具体实现的方法。
抽象类必须由其子类继承,才能实例化对象。
abstract修饰方法叫做抽象方法,该方法只有方法头,没有方法体
(1)抽象类
定义:abstract class 类名()
(2)抽象方法
abstract修饰方法,表示该方法是抽象方法,但前提该类一定是抽象类。
抽象方法只声明方法头,没有方法体
如果想使用这些方法,必须有抽象类的子类来实现,例如:
抽象类和抽象方法总结如下:
- 抽象类中既有抽象方法,也有非抽象方法
- 有抽象方法的类一定是抽象类
- 抽象类中不一定有抽象方法
2、综合实例
父类:选择题
public class Question { String text; //题干 String[] options; //选项 public void print() { System.out.println(this.text); for(int i=0;i<this.options.length;i++) { System.out.print(options[i]+'\t'); } System.out.println(); } public boolean check(char[] answers) { return false; } }
子类:单项选择题
public class SingleQuestion extends Question{ char answer; public SingleQuestion(String text,String[] options,char answer) { this.text=text; this.options=options; this.answer=answer; } public boolean check(char[] answers) { if(answers==null||answers.length!=1) { return false; } return this.answer==answers[0]; } }
子类:多项选择题
import java.util.Arrays; public class MultiQuestion extends Question { char[] answers; public MultiQuestion(String text,String[] options,char[] answers) { this.text=text; this.options=options; this.answers=answers; } public boolean check(char[] answers) { return Arrays.equals(answers,this.answers); } }
测试类:
import java.util.Scanner; public class PaperDemo { public static void main(String[] args) { Question[] paper= {null,null}; 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.print(); System.out.print("请选择:"); String str=console.nextLine(); char[] answers=str.toCharArray(); if(q.check(answers)) { System.out.println("给力呀!"); }else { System.out.println("亲,要努力呀!"); } } } }
遇到的问题:
综合实例理解不清楚
明天要学习的内容:
第六章:接口浅议