黑马程序员技术交流社区
标题:
谢谢大家对我上一个问题的解决,下面还有一个问题
[打印本页]
作者:
习惯就好
时间:
2015-3-1 12:49
标题:
谢谢大家对我上一个问题的解决,下面还有一个问题
本帖最后由 习惯就好 于 2015-3-1 13:58 编辑
问题就是我将继承的函数重写后为什么在输出结果里显示了两个;一个是没有修改前的一个是修改后的。我在用多态调用时为嘛总是给我报错!!!看的头都大了 是不是零基础学都这样呀??
class person
{
private String name;
private String sex;
person()
{
name="zhangshan";
sex="nan";
System.out.println(name+" "+sex);
}
public void show()
{
System.out.println(name+" "+sex);
}
}
class student extends person
{
public void study()
{
System.out.println("xuexi");
}
public void show()
{
System.out.println("lisi"+" "+"nan");
}
}
class jcdemo
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
student st=new student();
st.show();
person p=new student();
p.show();
p.study();
}
}
复制代码
求解答呀!快崩溃了
作者:
wdhm5423
时间:
2015-3-1 12:56
本帖最后由 wdhm5423 于 2015-3-1 13:12 编辑
public static void main(String[] args)
{
//System.out.println("Hello World!");
student st=new student();//student构造调用super(),调用父类构造方法person(),打印zhangshan nan
st.show();//调用student的show()方法。打印lisi nan
person p=new student();//调用父类构造方法person(),打印zhangshan nan;多态转化student的show()方法覆盖person的show()方法。
p.show();//调用student的show()方法打印lisi nan
p.study();//person中无study()方法,报错
}
复制代码
作者:
linuxpara910829
时间:
2015-3-1 13:28
p.study(); 编译时会报错 多态时不能这样使用 只能调用重写过的方法 ,调用这个方法只能用子类调
别的地方没有错了
作者:
zfgrinm
时间:
2015-3-2 02:19
你可以在再仔细看看视频,毕老师的视频里讲的很清楚的。
在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数的特点:
无论编译和运行,都参考做左边。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2