软件测试 | 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 类中就相当于定义了一个模板,在主方法中调用时,调用的就是普通方法,而子类只需要实现父类中的抽象方法,就可以取得一个具体的信息。
划线
评论
复制
发布于: 刚刚阅读数: 3
测吧(北京)科技有限公司
关注
社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入
微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬










评论