java多态
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呢?
}
}
------解决方案--------------------如果子类的方法注释上的话,你使用的是父类的方法,当然调用父类的成员变量了。
方法是继承了,但方法里使用的成员变量还是父类的。(不懂可以深入切磋)。
------解决方案--------------------//明明这个是i2这个对象调用从父类那里继承来的方法,可为什么输出的是Inh1里面的s呢
i2.print(); 调用的是Inh1的print() 所以是 Inh1 的 s
//如果把上面的注释去掉,那么怎么输出的才会是inh2呢?
注释去掉 输出的不是inh2吗?
------解决方案--------------------其实这段代码并没有用到多态,多态应该是这样:inh1 i2 = new inh2();
前面// public void print(){
// System.out.println(s);
// }
这里的inh2中的print方法注释掉了,所以print方法没有被重载,当然就是打印出inh1