interface A{}
class B implements A
{
public String test()
{
return "yes";
}
}
class Demo
{
static A get()
{
return new B();
}
public static void main(String[] args)
{
A a=get();
首先执行 A a=get();建立一个B的对象并把在内存中的地址值赋给a。然后用a对象调用test方法,将该方法返回的值在屏幕上打印输出。 作者: Alex shaw 时间: 2013-3-17 11:57
先说点题外话,我们在定义一个集合的时候通常是这样定义的
List list = new ArrayList();
list是一个接口,而ArrayList是一个实现类,这样做的好处是提高了可维护性,因为后期如果想把ArrayList变成linkList,只需要改这一句就可以了
接着我们看这个程序
在main方法中,首先定义了一个接口的引用,这个引用调用的是一个静态方法 A a=get();
其实这相当于A a = Demo.get()方法,这样就会返回一个B类的对象,虽然说最后是a.test(),但是a这个引用其实是指向了B的一个实例,相当于B的对象调用test方法作者: 爪哇攻城狮 时间: 2013-3-17 12:09