基础加基础就是不明白的问题
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的 这是父类和子类之间的多态性表现
你就把父类看成一个细管 他可以看见子类的一小部分实现
------解决方案--------------------复习下基础