黑马程序员技术交流社区
标题: 为什么会出现如下错误 [打印本页]
作者: 张振纲 时间: 2012-7-31 23:33
标题: 为什么会出现如下错误
- interface Test
- {
- void func();
- }
- class Demo
- {
- public static void main(String[] args)
- {
- Test t = new Test()
- {
- public void func()
- {
- System.out.println("Successful!");
- }
- };
- t.show();
- }
- void show(Test t)
- {
- t.func();
- }
- }
复制代码
作者: 唐志兵 时间: 2012-7-31 23:34
你源码都没贴出 怎么看得到错误。
作者: 王志明 时间: 2012-7-31 23:43
public class Demo { public static void main(String[] args) {
Test t = new Test() {
public void func() {
System.out.println("Successful!");
}
};
// 你应该这样写。。错误的原因是:t是Test类型的,Test里面没有show()方法,show()方法是Demo里面的,要用Demo的对象调用
// show()方法,还有show()方法要接收一个Test类型的对象,把t传进去就可以了
new Demo().show(t);
}
void show(Test t) {
t.func();
}
}
interface Test {
void func();
}
作者: 余明辉 时间: 2012-7-31 23:47
问题出在你的原文第16行代码 t.show(); 这句上面
对象t是看不到这个show方法的,因为是定义在Demo这个类面。
而这个t和这个Demo类是没有任何关系的。
张孝祥老师说过:main方法是程序的入口,定义在任何一个类中都可以。如果你要调用这个show方法,可以new一个Demo类的对象或Demo的子类对象
new Demo().show(t);这样就可以调用了
作者: 马州州 时间: 2012-8-1 00:56
本帖最后由 马州州 于 2012-8-1 01:02 编辑
interface Test
{
void show();这里要定义show()抽象类你下面的内部类才能实现,因为你创建的是Test的对象
void func();
}
class Demo
{
public static void main(String[] args)
{
Test t = new Test()
{
public void func()
{
System.out.println("Successful!");
}
};
t.show();
}
void show(Test t) 而且这里还有一个权限问题,要用public修饰你这个代码
{
t.func(); 这个地方的代码有错误,你定义在Demo类中,调用就出问题了,再这里不好改,我会再下面把改好的代码发出来
}
楼主代码有几处错误
1,接口中没有定义show()方法的抽象类
2,在覆盖show方法的时候权限问题
3,你内部类调用的是show()方法,但你show()方法都不在内部类中,怎么调用
你图上找不到符号就是因为,show方法不在内部类中
改好的代码如下
interface Test
{
void show();
void func();
}
class Demo1
{
public static void main(String[] args)
{
Test t=new Test()
{
public void show()
{
func(); 这样代码就不会出错的,楼主可以试试
}
public void func()
{
System.out.println("Successful!");
}
};
t.show();
}
}
作者: 樊占江 时间: 2012-8-1 01:14
没有show这个方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |