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 的方法;
}
}

解决方案 »

  1.   

    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多态的好处
      

  2.   

    接上
    父类 对象 = new 子类();这里的对象就是上转型对象。所谓的父类声明子类实现。(接口也类似)
    上转型对象特征:
    1.子类重写了父类的方法执行子类的。
    2.子类中有,父类中没有的。上转型对象没法调用。
    。好像还有记不太清了