public class Father { public void test()
{ System.out.print("father") ; }}public class Son extends Father { public void test()
{ System.out.print("son"); }}
}
public class Test{ public void static void main()
{
(Father )new Son().test();}
}打印结果是什么?为什么?
{ System.out.print("father") ; }}public class Son extends Father { public void test()
{ System.out.print("son"); }}
}
public class Test{ public void static void main()
{
(Father )new Son().test();}
}打印结果是什么?为什么?
解决方案 »
- FileOutputStream错误
- socket 和byte[]数字的问题
- 一个奇怪的问题,table的一列设置了CellEditor,当其获得焦点时tableModel.setValue操作对该cell无效。
- applet里ServerSocket监听端口的类没有main怎么自动运行,随时监听C语言发过来的请求,然后处理???
- Map 添加 简单类型与Object类型问题
- 关于java.lang.UnsupportedClassVersionError的问题
- 如何判断一个.class文件使用sdk的什么版本编译的?
- static块初始化static变量时产生的异常有没有方法抛出,让使用该static变量的语句能接收到这个异常?
- 在贴一次啊!!!!!希望大家不要觉得我幼稚~!麻烦大家了啊
- 100分求java +VC6.0使用JNI的最简单例子
- java 获取linux进程信息
- 急,在线等待,我将javaBean的toString 方法重写了,如果再将重写后的toString回bean对象
这条语句好像不能执行。
最好写成:
Father aFather = new Son();
aFather.test();
结果是:son
这个知识点应该属于动态邦定的内容。
其调用的方法应该是aFather这个对象引用所指向的实例的实际类型的方法调用。
也就是对Son这个类。
这方面的知识看看继承的多态和动态绑定吧。
public static void main(String[] args) {
Father f = new Son();
f.test();
}
}class Father {
public void test() {
System.out.println("Father");
}
}class Son extends Father {
public void test() {
System.out.println("Son");
}
}你是不是要这个效果?结果是Son
{ System.out.print("father") ; } } class Son extends Father { public void test()
{ System.out.print("son"); } }
public class Test{ public static void main(String args[])
{
Father farther=new Son();
farther.test();
}
} 输出结果为son
此时new Son();生成的对象转型为Father的对象,但仍然会先在Son类中搜索test方法,此处调用类Son中的test方法,输出son,如果去掉Son类中的test方法,就会调用类Father中的test方法
class Father { public void test()
{ System.out.print("father") ; } } class Son extends Father { }
public class Test{ public static void main(String args[])
{
Father farther=new Son();
farther.test();
}
} 输出father
执行结果肯定是son,无论是直接new son(),还是通过父类去指向,结果都是一样。
在继承重写方法的时候,父类调用子类的方法就是这样了。建议楼主看看继承方面的一些内容,关于方法的重写和重载问题都可以仔细看一下
实际上就是
test方法被动态的覆盖了
如果非要使用父类的方法
可以如下:
class Son extends Father {
public void test() {
super.test();//调用父类的方法
System.out.println("Son");
}
}