Spring里的Bean继承与Java继承的区别

来源:互联网 发布:软件试用期过了 编辑:程序博客网 时间:2024/06/05 20:40
+Spring中的Bean继承与Java中的继承截然不同。前者是实例与实例之间参数值的延续,后者则是一般到特殊的细化;前者是对象与对象之间的关系,后者则是类与类之间的关系。详细区别如下:

1) Spring中的子Bean和父Bean可以是不同类型,但Java中的继承则可保证子类是一种特殊的父类。

2) Spring中Bean的继承是实例之间的关系,因此主要表现为参数值的延续;而Java中的继承是类之间的关系,主要表现为方法、属性的延续。

3) Spring中的子Bean不可作为父Bean使用,不具备多态性;Java中的子类实例完全可当成父类实例使用

简单的实例代码如下:


目录:


具体代码:




public class America implements Person{
   private Axe axe;
   private String name;
public America(){
System.out.println("初始化America的构造参数");
}
public Axe getAxe() {
return axe;
}


public void setAxe(Axe axe) {
this.axe = axe;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public void useAxe() {
System.out.println("我是美国人:名字为:"+name+"。正在用斧头"+axe.chop());
}
}


America类与Chinese类相同。所以代码略去

配置文件beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://www.springframework.org/schema/beans"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean id="stoneAxe" class="com.cn.service.imp.StoneAxe"/>
<bean id="steelAxe" class="com.cn.service.imp.SteelAxe"/>
<!-- 定义ChineseBean为父类 id名字随便写 随后要写abstract=“true” 父类的实现类-->
<bean id="pT" abstract="true" class="com.cn.service.imp.Chinese">
<!-- 父类里的属性 -->
<property name="name" value="年第三"></property>
<property name="axe" ref="steelAxe"></property>
</bean>

<bean id="chinese" parent="pT"/>
<bean id="america" class="com.cn.service.imp.America" parent="pT">
</bean>
</beans>









原创粉丝点击