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