黑马程序员技术交流社区

标题: 方法中的类 [打印本页]

作者: 袁春龙    时间: 2011-7-15 19:59
标题: 方法中的类
方法中定义的类是不是一定要实现某个接口?
作者: 匿名    时间: 2011-7-15 20:09
接口是一种特殊抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
作者: 匿名    时间: 2011-7-15 20:11
不用啊,这种东西如果自己不知道就在Eclipse里面敲一下就好了。[code]public class a1 {
        public static void main(String[] args) {
                class a {
                }
        }
}
class a {
        public void abc() {
                class b {
                }
                b b = new b();
        }
}[/code]很简单的~... 这不就说明不管是普通方法还是main方法里都可以写不实现接口的类了么。不知道,就试试看么~... Eclipse不报错,那就是能行~....
作者: 窦雪    时间: 2011-7-15 21:08
标题: 回复 1 # 的帖子
楼主是看了面向对象(下)视频教程讲接口里面的那个例子么
interface PCI
{
        void start();
        void stop();
}
后面有一个地方是
class Assembler
{
        MainBoard mb = new MainBoard();  //class Mainboard的定义省略
        mb.usePCICard(new PCI()
        {
                public void start()
                {
                        System.out.println("test start");
                }
                public void stop()
                {
                        System.out.println("test stop");
                }
        }
        );
}

这里面mb.usePCICard(new PCI() { ..........}); 实际上是一个匿名内置类,相当于
class A implements PCI
{
        public void start();
        {
                System.out.println("test start");
        }
        public void stop();
        {
                System.out.println("test stop");
        }
}
mb.usePCICard(new A());

这种匿名类确实是要继承父类的, new PCI()实际上是new 了一个PCI的子类,后面的改写中A就是这个子类
但是这种匿名类只要是继承了一个父类就行,不一定非要实现一个接口。

如有错误,欢迎指出~~~
[ 本帖最后由 窦雪 于 2011-07-15  21:19 编辑 ]
作者: 匿名    时间: 2011-7-15 22:13
不是必须的。使用内部类最吸引人的理由是:每个内部类都能独立的继承自一个(接口的)实现,所以,无论外部类是否已经集成了某个(接口的)实现,对于内部类都没有影响。可以解决java多继承问题。。
方法中的内部类也叫局部内部类,有的时候,你解决一个复杂的问题,想创建一个类来辅助你的解决方案,但是又不希望这个类是公共可用时也使用内部类。这时可以不用继承接口。
作者: 袁春龙    时间: 2011-7-15 23:16
标题: 回复 3 # 的帖子
要是你的class b里面还有一个方法 ,请问我该如何调用那个方法?

           public class Interior{  
                public static void main(String[] args){  
        //                A a = new A();
                }
        }
        class A{
                public void withOut(){
                        class B{
                                public void withIn(){
                                        System.out.println("Hello heima");
                                }
                        }
                        B b = new B();
                }
        }
[ 本帖最后由 袁春龙 于 2011-07-15  23:18 编辑 ]
作者: 匿名    时间: 2011-7-16 15:45
标题: 回复 6 # 的帖子
视频教程里有例子的
class Outer {
        private int size = 0;
        public class Inner {
                public void doStuff() {
                        System.out.println("++size");
                }
        }
}
public class TestInner{
        public static void main(String[] args) {
                Outer outer = new Outer();
                Outr.Inner inner = outer.new Inner();
                inner.doStuff();
        }
}
作者: 王光保    时间: 2011-7-16 17:32
不用的,但有一点非常重要就是方法中类不能访问外部类的局部变量。
作者: 匿名    时间: 2011-7-17 02:00
方法中的类,不就是内部类嘛,而且是局部内部类。和实现接口没什么关系。
楼上什么叫外部类的局部变量?外部类中的叫成员变量,方法中的才叫局部变量。
需要注意的是,局部内部类访问方法的局部变量时,只能访问final关键字修饰的




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