SpringDI_容器的继承

Person

package com.spring.extend;

public class Person {

    private String name;

    public String getName() {
        return name;
    }

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

}

student

package com.spring.extend;

public class Student extends Person {

}

ApplicationContext.XML

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <!--在父类中进行赋值,子类通过 parent属性继承父类的内容 -->
    <bean id="person" class="com.spring.extend.Person">
        <property name="name" value="aaa"></property>
    </bean>

    <!--
        parent  实现了Spring容器内部的继承关系
     -->

    <bean id="student" class="com.spring.extend.Student" parent="person"></bean>    

    <!--
        因为java的继承机制,子类继承的父类的setXX方法,左右子类可以利用setXXX方法注入值
     -->
    <bean id="person2" class="com.spring.extend.Person"></bean>

     <bean id="student2" class="com.spring.extend.Student">
         <property name="name" value="bbb"></property>
     </bean>    

</beans>

测试

package com.spring.extend.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.spring.extend.Student;

public class ExtendsTest {

    @Test
    public void testDI_XML_constructor(){

        ApplicationContext context=
                new ClassPathXmlApplicationContext("applicationContext.xml");

//        Student student=(Student) context.getBean("student");
//
//        System.out.println(student.getName());  //aaa

//        Student student=(Student) context.getBean("student2");
//
//        System.out.println(student.getName());  //bbb
    }

}
时间: 2024-10-06 21:55:38

SpringDI_容器的继承的相关文章

C++ Primer 学习笔记_70_面向对象编程 --纯虚函数、容器与继承

面向对象编程 --纯虚函数.容器与继承 I.纯虚函数 在函数形参后面写上 =0 以指定纯虚函数: class Disc_item : public Item_base { public: double net_price(size_t) const = 0; //指定纯虚函数 }; 将函数定义为纯虚函数能够说明,该函数为后代类型提供了可以覆盖的接口,但是这个类的版本绝不会调用.重要的是,用户将不能创建Disc_item类型的对象. Disc_item discount; //Error Bulk

Spring容器关于继承的应用案例

一:案例演示 1.1.spring的配置文件applicationContext-extends.xml 1.2.业务类:CommonDao.java,PersonDao.java ---------------------------------------------------------------------------------------------------------------------------- 1.3.客户端代码 二:总结 1.如果一个类在spring配置文件中

c/c++ 继承与多态 容器与继承3

c/c++ 继承与多态 容器与继承2 巩固了容器里放智能指针的用法,但是有个问题,对于使用Basket类的用户来说,必须添加的是智能指针,如果能直接添加一个普通的类的对象的话,用起来就方便的多了,所以改进一下Basket类的add_item接口. 新的接口:一个是拷贝给定的对象,另一个是移动对象. void add_item(const Quote& sale);//左值拷贝 void add_item(Quote&& sale);//右值移动 关键点: 1,由于类Quote没有自

c/c++ 继承与多态 容器与继承1

问题:类B公有继承类A,类A有虚函数fun,类B覆盖了虚函数fun,有一个std::vector<A>,添加A的对象a,和B的对象b,到这个容器里,然后从vector里取出来,使用对象a.fun(),和对象b.fun(),会发生什么? 发现对象b.fun()的调用,实际调用的是父类A的fun()方法.也就是子类部分被切掉了. 如何解决呢,用std::vector<A*>或者std::vector<std::shared_ptr<A>> ,但推荐用智能指针.

(八)Docker-数据卷以直接命令和Dockerfile的形式添加,数据卷容器的概念及容器间继承实现

本文主要讲解数据卷的直接命令和dockerfile的两种添加方式,并对主机和容器之间数据是否能共享进行验证:以及通过数据卷容器,使其他容器通过挂载父容器实现数据共享,并验证父容器删除后其他容器是否仍能进行数据共享. 数据卷添加 容器数据卷在容器关闭后仍能将Docker运行产生的数据(如运算结果或日志信息)保存,可以将容器数据卷形象的想象成U盘,它的使容器与主机间.容器间的数据共享成为可能. 一.直接命令添加 1.在添加前,主机里没有/myDataVolume,容器里没有/dataVolumeCo

C++ 容器与继承

如果容器类型定义为基类类型,那么虽然可以把派生类装进容器中,但是不能通过容器访问派生类自己的public成员,派生类将会倍切掉,只保留派生类的基类部分: 如果把容器定义为派生类类型,那么不能把基类类型装进容器中, 没有从基类类型到派生类类型的标准转换.虽然可以显式的使用强制类型转化把基类转化成派生类,放入容器,但是如果使用这些元素的派生类成员时,它们将会是未初始化的. 1 class Base 2 { 3 public: 4 Base(int i = 0):val(i){} 5 int base

Android基本控件和容器之间继承关系概览图

图中,圆柱体表示容器(上部),矩形表示非容器类(下部)

OOP3(继承中的类作用域/构造函数与拷贝控制/继承与容器)

当存在继承关系时,派生类的作用域嵌套在其基类的作用域之内.如果一个名字在派生类的作用域内无法正确解析,则编译器将继续在外层的基类作用域中寻找该名字的定义 在编译时进行名字查找: 一个对象.引用或指针的静态类型决定了该对象的哪些成员是可见的,即使静态类型与动态类型不一致: 1 #include <iostream> 2 using namespace std; 3 4 class A{ 5 public: 6 // A(); 7 // ~A(); 8 ostream& print(ost

句柄类与继承

前一小节<容器与继承>http://blog.csdn.net/thefutureisour/article/details/7744790提到过: 对于容器,假设定义为基类类型,那么则不能通过容器訪问派生类新增的成员:假设定义为派生类类型,一般不能用它承载基类的对象,即使利用类型转化强行承载,则基类对象能够訪问没有意义的派生类成员,这样做是非常危急的.对这个问题的解决的方法,是使用容器保存基类的指针. 在C++中,这类问题有一种通用的解决的方法,称为句柄类.它大体上完毕双方面的工作: 1.管