A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张振纲 中级黑马   /  2012-7-31 23:33  /  1963 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1 加油

查看全部评分

5 个回复

倒序浏览
你源码都没贴出 怎么看得到错误。
回复 使用道具 举报
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();
}

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1 赞一个!

查看全部评分

回复 使用道具 举报
问题出在你的原文第16行代码  t.show();    这句上面
对象t是看不到这个show方法的,因为是定义在Demo这个类面。
而这个t和这个Demo类是没有任何关系的。
张孝祥老师说过:main方法是程序的入口,定义在任何一个类中都可以。如果你要调用这个show方法,可以new一个Demo类的对象或Demo的子类对象
new Demo().show(t);这样就可以调用了

评分

参与人数 1黑马币 +30 收起 理由
包晗 + 30

查看全部评分

回复 使用道具 举报
本帖最后由 马州州 于 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();

}

}

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1 赞一个!

查看全部评分

回复 使用道具 举报
没有show这个方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马