• 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");
            
                
        }
        }
    
    }

    二、问题

    如果子类也设置成抽象类会出现问题

    三、明天写这一章的题

  • 相关阅读:
    Linux忘了root的密码怎么办
    缩略图的实现
    ASP.NET程序编写注意 (转载)
    太极拳
    Linux系统管理技巧大荟萃
    茶经(转载)
    datagrid的显示控制
    太极功
    Linux下硬盘分区详解
    Tomcat4.0中文问题简单解决方法
  • 原文地址:https://www.cnblogs.com/zyljal/p/13369491.html
Copyright © 2020-2023  润新知