之前只是知道抽象类是什么,但是具体在项目中如何用到还是一知半解,今在项目中发现抽象类的其中一种用法--用于抽象返回类型:(感觉是很基础的东西,但是惭愧之前写代码并未用上)
定义为抽象类型为父类Model返回类型,其属性为子类Model返回类型的共有属性,具体查询时根据不同的条件查询到不同子类,返回结果将会根据子类类型的不同而在父类Model基础上增加对应属性;(表达能力有限,看具体例子好了)
//抽象返回类型
public abstract class Person{
private String id;
private String name;
private String age;
private String type;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
public class Student extends Person{
private String grade;//成绩
private String major;//专业
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
}
public class Worker extends Person{
private String workingAge;//工龄
private String skill;//技能
public String getWorkingAge() {
return workingAge;
}
public void setWorkingAge(String workingAge) {
this.workingAge = workingAge;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
}
//下面是接口查询人员属性
public class PersonService{
//根据不同的人员类型走不同的方法查询到Person的不同子类,子类中既有Person中的属性,也有相应子类独有属性
public Person getInfo(String id,String type){
switch (type){
case "Student":
return getStudent();
case "Worker":
return getWorker();
default:
return null;
}
}
public void main(String[] args){
PersonService personService = new PersonService();
Person person = personService.getInfo("111","Worker");
System.out.println(person);
}
}
public Student getStudent(){
Student student = new Student();
student.setName("学生张三");
student.setMajor("专业计算机");
return student;
}
public Worker getWorker(){
Worker worker = new Worker();
worker.setName("工人张三");
worker.setSkill("技能编程");
return worker;
}