zoukankan      html  css  js  c++  java
  • 2020.7.23

    一、今日学习内容

      1、abstract关键字

          abstract是“抽象”的意思,使用abstract 修饰类,叫做抽象类。抽象类中既有抽象方法也有具体实现的方法,抽象类必须由其子类继承,才能实例化对象。abstract 修饰方法,叫做抽象方法,该方法只有方法头,没有方法体。

      (1)抽象类:abstract  class  类名{ }

                             示例:public  abstract  class  Type{  }

        (2)抽象方法:abstract修饰方法,表示该方法是抽象方法,但前提该类一定是抽象类。抽象方法只声明方法头,没有方法体。

             示例:

    public abstract class Type {
       //只有方法头,没有方法体
       public abstract double area() ;
    }

         抽象类中除了有抽象方法,还可以有具体的实现方法。

    public abstract class Type {
       //只有方法头,没有方法体
       public abstract double area() ;
       public void info() {
          System. out.println ("我是图形");
       }
    }

         如果想使用这些方法,必须由抽象类的子类来实现,例如:

    public class Circle extends Type {
           private static final double PI=3.14;
           private int r=5;
             @override
              public double area () {
                   double area = PI*r*r;
                   return area;
             }
             public static void main(String[] args) {
                  Type type=new Circle() ;
                  type.area() ;
                  type.info() ;
            }
    }

           现将抽象类和抽象方法总结如下。
             (1)抽象类中既有抽象方法,也有非抽象方法。
             (2)有抽象方法的类一定是抽象类。
             (3)抽象类中不一定有抽象方法。

       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]+'	');
            }
            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("亲,要努力呀!");
                }
            }
            
        }
    
    }

      

    二、遇到的问题

       对示例理解不清楚

    三、明日计划

      继续学习第六章的内容

  • 相关阅读:
    Java8 新特性default
    Java Map操作
    Java List操作
    Java Set操作
    Java集合 List,Set,Map
    Java final,static 关键字
    Java ConcurrentHashMap
    Java Synchronized的用法
    Linux 基本收集
    HashMap 扩容 加载因子
  • 原文地址:https://www.cnblogs.com/wmdww/p/13365694.html
Copyright © 2011-2022 走看看