spring注入,本质其实就是实例化对象后赋值给接口的引用,在其他类要调用接口时,他不需要考虑实现类,直接和接口打交道,就是通过A d=new a(),但是对象都是由spring实例化,所以spring注入,就是将实例化对象给接口引用,然后来调用一些方法,所以我们在用spring时,是接口的引用。
所以在用他的时候一般要定义一个私有的接口引用,然后注入
在C++中:
class A {
public:
A() {}
virtual void foo() {
cout << "This is A." << endl;
}
};
class B : public A {
public:
B() {}
void foo() {
cout << "This is B." << endl;
}
};
int main(int argc, char* argv[]) {
A *a = new B();
a->foo();
if(a != NULL)
delete a;
return 0;
}
这将显示:
This is B.
如果把virtual去掉,将显示:
This is A.
前面的多态实现使用抽象类,并定义了虚方法.
在java中:
多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。从程序设计的角度而言,多态可以这样来实现(以java语言为例):
public interface Parent {
public void simpleCall();
}
public class Child_A implements Parent{
public void simpleCall(){
//具体的实现细节;
}
}
public class Child_B implements Parent{
public void simpleCall(){
//具体的实现细节;
}
}
//当然还可以有其他的实现
然后,我们就可以看到多态所展示的特性了:
Parent pa = new Child_A();
pa.simpleCall()则显然是调用Child_A的方法;
Parent pa = new Child_B();
pa.simpleCall()则是在调用Child_B的方法。所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用,可以实现控制反转这在大量的J2EE轻量级框架中被用到,比如Spring的依赖注射机制
转自百度问问的 为了C币