【java bean】bean的继承

编程入门 行业动态 更新时间:2024-10-10 05:24:34

【<a href=https://www.elefans.com/category/jswz/34/1770091.html style=java bean】bean的继承"/>

【java bean】bean的继承

如果两个bean定义比较类似,那么我们可以选择将其中一个bean继承自另外一个bean,然后在此基础上添加或者重写标签,增加复用性。
为了演示,我们定义两个类
人类:

public class People
{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "People{" +"name='" + name + '\'' +'}';}
}

老师类:

public class Teacher
{private String name;private int salary;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}@Overridepublic String toString() {return "Teacher{" +"name='" + name + '\'' +", salary=" + salary +'}';}
}

可以看到两个类属性比较相似,老师类只是多了一个薪水属性,所以我们定义bean的时候没必要两个都一一定义,老师类的bean可以继承人类,然后在此基础上再定义一个薪水属性。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""xmlns:xsi=""xsi:schemaLocation=" .xsd"><bean id="people" class="upc.yqs.People"><property name="name" value="a people"></property></bean><bean id="teacher1" class="upc.yqs.Teacher" parent="people"><property name="salary" value="5000"></property></bean><bean id="teacher2" class="upc.yqs.Teacher" parent="people"><property name="name" value="a teacher"></property><property name="salary" value="7000"></property></bean>
</beans>

可以看到teacher1和teacher2都继承了people,teacher1新增了一个salary属性,由于没重写name属性,所以name就沿用了people的name。teacher2不仅新增了salary属性,还重写了name。
接下来写一个测试方法:

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class InheritTest
{ApplicationContext context;@Beforepublic void getContext() {context = new ClassPathXmlApplicationContext("people_and_teacher.xml");}@Testpublic void InheritTest(){People people=(People) context.getBean("people");Teacher teacher1=(Teacher) context.getBean("teacher1");Teacher teacher2=(Teacher) context.getBean("teacher2");System.out.println(people);System.out.println(teacher1);System.out.println(teacher2);}
}

输出结果:

People{name='a people'}
Teacher{name='a people', salary=5000}
Teacher{name='a teacher', salary=7000}

说到继承,如果有多个bean都有很多共同的标签,那么我们可以定义一个模板bean,专门用来当模板,如果想要定义模板bean的话,我们要设置abstract=“true”,表示这个bean是抽象的,这和java中的抽象类很相似。如果一个bean被定义为抽象的,那么spring就不会实例化它了,而是忽略它。
比如这样:

<bean id="teacher_template" class="upc.yqs.People" abstract="true"><property name="name" value="teacher"></property>
</bean>

更多推荐

【java bean】bean的继承

本文发布于:2024-03-05 09:43:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1711952.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:java   bean

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!