public void ff() { system.out.println( "sss "); } }
class d { public static void main(string[] args) { a a = new b();
a.ff();//此处调用的接口a 的方法,还是实现类b 的方法; } }
发表于:2007-01-28 22:05:271楼 得分:0
肯定是b的方法
a的方法没有方法体,没有实现,何来调用之说呢
这是面向对象的基本概念 多态
看看资料吧
发表于:2007-01-28 22:11:192楼 得分:0
接口引用指向子类对象
发表于:2007-01-28 22:15:093楼 得分:0
同意楼上
发表于:2007-01-28 22:34:064楼 得分:0
调用b的方法
发表于:2007-01-28 23:18:435楼 得分:0
接口回调
发表于:2007-01-28 23:20:396楼 得分:0
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多态的好处
发表于:2007-01-28 23:28:517楼 得分:0
接上 父类 对象 = new 子类();这里的对象就是上转型对象。所谓的父类声明子类实现。(接口也类似) 上转型对象特征: 1.子类重写了父类的方法执行子类的。 2.子类中有,父类中没有的。上转型对象没法调用。 。。。。。。。好像还有记不太清了