黑马程序员技术交流社区

标题: 内部类的问题 [打印本页]

作者: Moonboy2014    时间: 2014-6-14 22:44
标题: 内部类的问题
interface Inter
{
        void method();
}
class Test
{
        public static void function()
        {
                 new Inter()
                {
                        public void method()
                        {
                                System.out.println("method run!");
                        }
                };
        }
}
class TestDemo4
{
        public static void main(String[] args)
        {
                Test.function().method();
        }
}
请教各位高手,这段代码问题出在哪,知道的请详细解答一下,感谢!
作者: 沐阳6011    时间: 2014-6-15 10:02
哥们,你其中有一句我不太懂,就是new Inter(){{}};看样子应该是一条语句,我不知道这是什么知识点?请指教啊,:o:o我只知道这样能实现:
  1. interface Inter
  2. {
  3.         void method();
  4. }
  5. class Test
  6. {
  7.         public static void function()
  8.         {
  9.                 class S implements Inter
  10.                 {
  11.                         public void method()
  12.                         {
  13.                                 System.out.println("method run!");
  14.                         }
  15.                 }
  16.                  new S().method();
  17.         }
  18. }
  19. class TestDemo11
  20. {
  21.         public static void main(String[] args)
  22.         {
  23.                 Test.function();
  24.         }
  25. }
复制代码

:lol
作者: Seraphim    时间: 2014-6-15 11:32
  1. interface Inter
  2. {
  3.        void method();
  4. }
  5. class Test
  6. {
  7.         public static void function()
  8.         {
  9.                 Inter i = new Inter()          //生成一个Inter对象,但是Inter只是一个接口,需要通过匿名类的方式实现这个接口并返回一个对象
  10.                 {
  11.                         public void method() //这里只是实现了接口中的抽象方法,并没有调用
  12.                         {
  13.                                 System.out.println("method run!");
  14.                         }
  15.                         
  16.                 };
  17.                
  18.                 i.method();//这里通过Inter的对象来调用里面的method方法
  19.         }
  20. }
  21. public class TestDemo4
  22. {
  23.         public static void main(String[] args)
  24.         {
  25.                 Test.function(); //你的代码:Test.function().method();本身的书写是错误的,相当于你通过一个方法调用另一个方法,方法只能通过类或者对象调用。
  26.         }
  27. }
复制代码


需要注意的地方:
1.非静态方法需要通过对象来调用,静态方法需要通过类来调用
2.方法只有通过调用才能执行,只声明方法不会执行
作者: 沐阳6011    时间: 2014-6-15 17:05
Seraphim 发表于 2014-6-15 11:32
需要注意的地方:
1.非静态方法需要通过对象来调用,静态方法需要通过类来调用
2.方法只有通过调用才能执 ...

受教了:handshake
作者: y200745    时间: 2014-6-15 17:20
好吧,错过了回答时间了,同志们智慧无限啊。
作者: Moonboy2014    时间: 2014-6-15 23:58
y200745 发表于 2014-6-15 17:20
好吧,错过了回答时间了,同志们智慧无限啊。

高手在民间。。。。。。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2