黑马程序员技术交流社区
标题:
字符类的程序编译通过不了
[打印本页]
作者:
吴通
时间:
2012-8-22 20:21
标题:
字符类的程序编译通过不了
class Fu
{
void method()
{
System.out.println("Fu.run");
}
}
class Zi extends Fu
{
void method()
{
System.out.println("Zi.run");
}
}
class ZF
{
public static void main(String[] args)
{
Fu f=new Zi();
System.out.println(f.method());
Zi z=new Zi();
System.out.println(z.method());
}
}
大家帮我看看这段代码是什么问题?
还有就是多态成员:非静态时编译看左边,运行看右边
静态时编译和运行都看左边 能不能举例说明一下 谢谢
作者:
全海波
时间:
2012-8-22 20:44
至于这个问题嘛!这就要说到静态绑定与动态绑定的问题了,所谓的静态绑定就是,在类加载的时候,该方法就被绑定在类上,所以多态上用父类的引用,运行的时候也是走的是父类的方法,而动态绑定,是需要运行时,对方法进行搜索并锁定,所以多态上用父类的引用,编译的时候查看父类是否由此方法,如果有的话,运行的话就会运行子类与父类相同的方法,如果父类没有该方法,编译的时候就会报错
作者:
吴通
时间:
2012-8-22 20:55
这个程序子类父类都有method方法,为什么编译通过不了啊?
作者:
全海波
时间:
2012-8-22 21:09
浅尝不止 发表于 2012-8-22 20:55
这个程序子类父类都有method方法,为什么编译通过不了啊?
报的是什么错?
作者:
吴通
时间:
2012-8-22 21:17
报错在
System.out.println(f.method());
和
System.out.println(z.method());
说的是此处不允许使用“void”类型
作者:
全海波
时间:
2012-8-22 21:17
class Fu
{
void method()
{
System.out.println("Fu.run");
}
}
class Zi extends Fu
{
void method()
{
System.out.println("Zi.runr");
}
}
class ZF
{
public static void main(String[] args)
{
Fu f=new Zi();
f.method();
//System.out.println(f.method());
Zi z=new Zi();
z.method();
//System.out.println(z.method());
}
}
复制代码
注释上面两句即可,因为你你的语句是这样的:System.out.println(System.out.println("Fu.run"));而里面的那个输出语句有返回值,当然编译不同过啦!
作者:
吴通
时间:
2012-8-22 21:19
奥,是的 谢谢 问题已解决!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2