Thread thread = new Thread()
        {
            public void run()
            {
                while(true)
                {
                    try
                    {
                        Thread.sleep(500);
                    }
                    catch(Exception e){}
                    
                    System.out.println("1:"+this.getName());
                    System.out.println("2:"+Thread.currentThread().getName());
                }
            }
        };这个问题在很久之前就有想到过,当初是看到定义一个接口,需要在生成接口对象(或许说生成接口对象有错误,就是 new 接口)时,对接口中的方法进行方法体的定义。
当初就感觉很奇怪,因为之前看过一点点C++,印象中一个类的方法是固定的,一般不会在定义对象的时候,再对类中的方法进行修改。
但接口属于JAVA特有,想这也是一种新的特性。但刚刚发现这个问题,这让我很疑惑。代码上就是如上。
当我以一个类定义一个对象的时候,我依然可以对非抽象类中的非抽象方法进行重写。
那这种类和接口有何区别,难道就是一个比较高级的接口,这个类中所拥有的不变的东西只是那些属性和方法的名称,至于方法完成的功能,程序员完全可以在自己定义一个该类的对象的时候进行修改。
(这根本就是像一个接口,而不像一个类)前些天在论坛看到一个提及JAVA多态的问题,我说JAVA无需通过虚函数,就可以完成父类访问子类方法的操作。结果有一个朋友说,JAVA中除了final和static,所有的方法都是虚函数。
不知这个是否与上面这个生成对象时重写方法有关。还有,JAVA中有什么时候,生成的对象,无法修改其对应类中本身已经定义好的方法呢?

解决方案 »

  1.   

    还有,JAVA中有什么时候,生成的对象,无法修改其对应类中本身已经定义好的方法呢?
    这个可以用final关键字,和加private访问权限控制的,在方法前加final or private
      

  2.   

    LZ,你想多了,这就是匿名类而已,最后编译,也就是一个class。
      

  3.   

    接口,抽象类,多态,java特性啊。
    当一个东西没办法被其他class调用或者不想被其他class调用的时候,就可以用匿名内部类啦。