java匿名内部类_java中匿名内部类的两种实现方式

使用匿名内部类课使代码更加简洁、紧凑,模块化程度更高。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式:第一种,继承一个类,重写其方法;第二种,实现一个接口(可以是多个),实现其方法。下面通过代码来说明:

public class TestAnonymousInterClass{

public static void main(String args[]){

TestAnonymousInterClass test=new TestAnonymousInterClass();

test.show();

}

//在这个方法中构造了一个匿名内部类

private void show(){

Out anonyInter=new Out(){// 获取匿名内部类实例

void show(){//重写父类的方法

System.out.println("this is Anonymous InterClass showing.");

}

};

anonyInter.show();// 调用其方法

}

}

// 这是一个已经存在的类,匿名内部类通过重写其方法,将会获得另外的实现

class Out{

void show(){

System.out.println("this is Out showing.");

}

}

程序运行的输出结果为:

this is Anonymous InterClass showing.

所以在这里看出,匿名内部类有了自己的实现。其实很简单,使用匿名内部类是因为我这地方需要有点什么特殊的实现,所以我就在这地方把具体实现也给了出来了。然后我就在这地方获取它的实例,调用它的方法。

接口的方式,只要把父类换成接口就行了,没必要给出代码了。

使用匿名内部类时我们不要忘了我们的目的,我们只是在这地方想对某个类有特殊的实现。而不要想得太多,在匿名内部编写其它的方法。在匿名内部类中编写的自己的方法是不可见的。此种做法是毫无意义的,当然一般也不会这么做。在这里只是告诉初学者对于匿名内部类不要想的太多,而要这么想:匿名内部类就是重写父类或接口的方法。

匿名内部类是没有名字的,所以我们没办法获得其类型,而只能把它当作超类或接口类型来使用。

当然,我这篇文章不是很有深度。欢迎发表意见!

6

14

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-07-25 17:11

浏览 20654

评论

16 楼

weed_hz

2013-04-20

abstract class out(){

void show(){

System.out.printl("hello world");

}

}

15 楼

allenny

2013-01-27

都取名叫anonyInter了,何来匿名呢?

14 楼

Jcson

2012-08-19

我怎么感觉你们理解

Out anonyInter=new Out()

这句理解错了,

anonyInter

并不是内部类的名称,是匿名的,

13 楼

toliuxuan

2012-08-04

monokurobo 写道

首先你对匿名内部类的理解是错的

1.匿名内部类是没有名字的:Out anonyInter=new Out()你在这里已经定义了这个内部类的名字是anonyIntent。

2.可以肯定的是你对匿名内部类的作用的理解,就是可以继承类或者实现接口

亲,anonyIntent这只是一个引用变量而已吧,重么是内部类的名字呢。。

12 楼

monokurobo

2012-02-02

首先你对匿名内部类的理解是错的

1.匿名内部类是没有名字的:Out anonyInter=new Out()你在这里已经定义了这个内部类的名字是anonyIntent。

2.可以肯定的是你对匿名内部类的作用的理解,就是可以继承类或者实现接口

11 楼

JMS_Exception

2011-11-24

误人子弟。。。 :wink:

10 楼

lwy8802

2011-10-17

在匿名内部类中编写的自己的方法是不可见的。此种做法是毫无意义的````

不要误人子弟```谢谢```

9 楼

zhaoyu_h

2011-09-09

很好的啊。。。谢谢啦。。。

8 楼

wwjjkk

2011-02-24

原先一直没搞清楚匿名内部类到底用来做什么,看了LZ写的东西,豁然开朗了

38687d1a1ad71d37c86f287056834d1a.gif

7 楼

yongboy

2010-10-23

Out anonyInter=new Out(){// 获取匿名内部类实例

嗯,这里已经不是匿名了,呵呵~

6 楼

微雨骑驴入剑门

2010-06-11

谢谢

学习了

5 楼

ddzero

2010-05-31

这是匿名内部类吗?顶多算内部类

4 楼

tntxia

2009-12-03

挺有意思的。

966903dea4bcb507358d5dcce8b912e5.gif

3 楼

heart4321

2009-09-30

heart4321 写道

我认为你对匿名内部类的概念认识有误。

2 楼

heart4321

2009-09-30

我认为你对匿名内部内的概念认识有误。

1 楼

mniz

2009-03-13

兄弟,我虽然不是很懂匿名内部类,但是绝对不是你所说的,匿名内部类的语法你的先弄清楚

你可能感兴趣的:(java匿名内部类)