黑马程序员技术交流社区

标题: 为什么会出现如下错误 [打印本页]

作者: 张振纲    时间: 2012-7-31 23:33
标题: 为什么会出现如下错误
  1. interface Test
  2. {
  3. void func();
  4. }
  5. class Demo
  6. {
  7. public static void main(String[] args)
  8. {
  9. Test t = new Test()
  10. {
  11. public void func()
  12. {
  13. System.out.println("Successful!");
  14. }
  15. };
  16. t.show();
  17. }
  18. void show(Test t)
  19. {
  20. t.func();
  21. }
  22. }
复制代码

作者: 唐志兵    时间: 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