写点什么

软件测试 | Java 抽象类的实际应用——模版设计

  • 2023-08-08
    北京
  • 本文字数:1561 字

    阅读完需:约 5 分钟

更多学习资料戳!!!

既可以为抽象类实例化,那么抽象类到底应该如何使用呢?来看下面的这样一种场景:假设人分为学生和工人,学生和工人都可以说话,但是学生和工人说话的内容是不一样的,也就是说,说话这个功能应该是一个具体功能,而说话的内容就要由学生或工人来决定了,所以此时就可以使用抽象类实现这种场景,如图所示。

范例:抽象类的实际应用

abstract class Person {                               //定义抽象类Person     private String  name;                           //定义name属性     private int  age;                                //定义age属性     public Person (String name,int age){           //为属性初始化          this.name = name;                           //为name属性赋值          this.age = age ;                            //为age属性赋值}     public String getName(){                       //取得name属性内容          return  name;       }      public int getAge(){                           //取得age属性内容           return  age;       }      public voic say() {                              //说话的具体功能,要定义成普通方法            System.out.printIn(this.getContent());       }       public abstract  String getContent();            //说话的内容由子类决定}   class Student extends Person {                       //定义Student类继承Person类       private float score;       public Student(String name,int age,float score) {            super(name,age);                            //调用父类的构造方法            this。score = score;               }        public String getContent()                     //覆写父类中的抽象方法              return  "学生信息 --> 姓名:"+ super.getName()+                      ":年龄:" + super.getAge()                       +":年龄:" + this.score;         }     }     class Worker extends Person {                        //定义Worker类继承Person类           private float salary;           public  Worker(String name,int age,float salary)   {               super(name,age);                            //调用父类的构造方法               this.salary = salary;   }       public String getContent(){                         //覆写父类中的抽象方法            return "工人信息 --> 姓名:"+super.getName()+                 ":年龄:" + super.getAge()                 +":工资:" + this.salary;   }}public class AbstractCaseDemo02{        public static void main (String[]  args) {              Person   per1 = null;                           //声明Person对象              Person   per2 = null;                           //声明Person对象              per1 = new Student("张三",20,99.of);           //学生是一个人              per2 = new Worker("李四",30,3000.of);           //工人是一个人              per1.say();                                     //学生说学生的内容              per2.say();                                     //工人说工人的内容    }  }      
复制代码

程序运行结果:

学生信息 -->姓名:张三:年龄 20:成绩:99.0

工人信息 -->姓名:李四:年龄:30:工资:3000.0

从程序的运行结果中可以发现,在 Person 类中就相当于定义了一个模板,在主方法中调用时,调用的就是普通方法,而子类只需要实现父类中的抽象方法,就可以取得一个具体的信息。

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | Java抽象类的实际应用——模版设计_测试_测吧(北京)科技有限公司_InfoQ写作社区