java多态

hailun 2007-10-16 11:17:19
class Inh1{
public String s ="inh1";
public void print(){
System.out.println(s);
}
}
class Inh2 extends Inh1{
public String s ="inh2";
// public void print(){
// System.out.println(s);
// }
}

public class Main {


public static void main(String[] args) {
Inh2 i2 =new Inh2();
i2.print(); //明明这个是i2这个对象调用从父类那里继承来的方法,可为什么输出的是Inh1里面的s呢
//如果把上面的注释去掉,那么怎么输出的才会是inh2呢?
}

}
...全文
165 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lock69 2007-10-17
  • 打赏
  • 举报
回复
其实这段代码并没有用到多态,多态应该是这样:inh1 i2 = new inh2();
前面// public void print(){
// System.out.println(s);
// }
这里的inh2中的print方法注释掉了,所以print方法没有被重载,当然就是打印出inh1
hailun 2007-10-16
  • 打赏
  • 举报
回复
Inh2 不是从Inh1继承吗?当然包括成员变更和方法啊

那么i2.print(); 不应该是调用从父类那里继承来的print() 方法吗?这个应该不应该是Inh2的吗?因为继承过来了呀
husl 2007-10-16
  • 打赏
  • 举报
回复
//明明这个是i2这个对象调用从父类那里继承来的方法,可为什么输出的是Inh1里面的s呢

i2.print(); 调用的是Inh1的print() 所以是 Inh1 的 s

//如果把上面的注释去掉,那么怎么输出的才会是inh2呢?
注释去掉 输出的不是inh2吗?
javahelper 2007-10-16
  • 打赏
  • 举报
回复
如果子类的方法注释上的话,你使用的是父类的方法,当然调用父类的成员变量了。

方法是继承了,但方法里使用的成员变量还是父类的。(不懂可以深入切磋)。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧