日期:2014-05-20  浏览次数:20653 次

基础加基础就是不明白的问题
interface   A   {

void   ff();
}

class   B   implements   A   {

public   void   ff()   {
System.out.println( "sss ");
}
}

class   D   {
public   static   void   main(String[]   args)   {
A   a   =   new   B();

a.ff();//此处调用的接口A   的方法,还是实现类B   的方法;
}
}



------解决方案--------------------
肯定是B的方法

A的方法没有方法体,没有实现,何来调用之说呢

这是面向对象的基本概念 多态

看看资料吧


------解决方案--------------------
接口引用指向子类对象
------解决方案--------------------
同意楼上
------解决方案--------------------
调用B的方法

------解决方案--------------------
接口回调
------解决方案--------------------
class Father
{
public void print(String str)
{
System.out.println( "答:我是老子 ");
}
}
public class Son extends Father {

public Son() {
super();
// TODO 自动生成构造函数存根
}

public void print(String str)
{
System.out.println(str);
System.out.println( "答:我是儿子 ");
}

public static void main(String args[])
{
Father who= new Son();
who.print( "问:我是谁? ");
}

}

输出结果:
问:我是谁?
答:我是儿子
这就是方法里的重写,只不过你的例子是重写了接口中的方法,我这个例子是重写了父类中的方法。
你例子中的A a = new B();中的a和我这个例子中的Father who= new Son();的 who叫上转型对象,是java多态的一种方式。你可以再写一个Daughter类继承father,并重写pint方法。Father who = new Daughter(); who.print();将执行女儿类中的print方法。
儿子,女儿都是父亲的,但具有不同的特征。这就是java多态的好处
------解决方案--------------------
System.out.println( "sss ");
------解决方案--------------------
这个就是多态 B的方法
------解决方案--------------------
有时自己想不明白,看完书仍想不明白的问题,最好的解决方法就是实验。
------解决方案--------------------
有时候人脑总归是人脑,实践是检验真理的最好办法,呵呵!
------解决方案--------------------
B
------解决方案--------------------
面向对象的多态性~
------解决方案--------------------
调用的是B的 这是父类和子类之间的多态性表现
你就把父类看成一个细管 他可以看见子类的一小部分实现
------解决方案--------------------
复习下基础