黑马程序员技术交流社区
标题:
匿名内部类
[打印本页]
作者:
code_linux
时间:
2015-8-18 19:39
标题:
匿名内部类
class TestAbstract {
public static void main(String[] args) {
Test t=new Test();
t.function();
}
}
interface Inter {
public abstract void method();
}
class Test {
static void function() {
new Inter() {
public void method() {
System.out.println("method");
}
};
}
}
为什么打印不出method呢?
作者:
qlmmys
时间:
2015-8-18 23:32
本帖最后由 qlmmys 于 2015-8-18 23:42 编辑
没有调用method()
作者:
keviner
时间:
2015-8-18 23:39
你的匿名内部类没有调用method()方法,当然不打印了
new Inter() {
public void method() {
System.out.println("method");
}
}.
method()
;
作者:
visen
时间:
2015-8-18 23:44
class Test {
static void function() {
new Inter() {
public void method() {
System.out.println("method");
}
}[color=Red].method();[/color]
}
}
复制代码
作者:
visen
时间:
2015-8-18 23:45
没有调用method()方法
作者:
TheBadboy
时间:
2015-8-19 00:46
2楼正解
作者:
icichacici
时间:
2015-8-19 06:55
你没有调用啊
作者:
sangyuan
时间:
2015-8-19 10:13
本帖最后由 sangyuan 于 2015-8-19 12:00 编辑
刚登录看见~~ 匿名内部类我也是刚学,把我理解的给你说一下吧,仅供参考。你这个程序中匿名内部类的格式写错了,匿名内部类的格式:
new 父类名或者接口名(){定义子类成员或者覆盖父类方法}
.方法
。
new Inter() {
public void method() {
System.out.println("method");
}
}.method();
复制代码
下面用一个小程序来给你说说匿名内部类一般什么时候用,以及用的好处;
/*
所有父类或者父接口出现的地方,完全可以用子类对象替代。
*/
interface Animal
{
public abstract void eat();
}
//方式一:普通的方法,创建一个Dog类来实现接口Animal的show方法,然后在下面测试类中,再创建一个对象来调用这个方法
/*
class Dog implements Animal
{
public void eat()
{
System.out.println("eat dog");
}
}
*/
class Test
{
//一个方法的形式参数是接口(抽象类)
public void show(Animal a) //Animal a = new Dog();
{
a.eat();
}
}
class AnimalTest
{
public static void main(String[] args)
{
Test t = new Test();
//Dog d = new Dog();
//t.show(d);
//方法二:使用匿名内部类,这样就不用再创建类,也不用再测试类中创建对象,需要注意的是,在这儿,匿名内部类是作为show方法里的参数进行传递的。你那个程序是在通过匿名内部类建立一个Inter的子类对象
复制代码
不知道对你有帮助没? 这是我自己的理解,如果哪点儿说的不对,也希望看到的大神们帮忙指正!!!
作者:
sangyuan
时间:
2015-8-19 12:03
方法二不知道怎么回事儿,粘不上去,付下面吧
t.show(new Animal(){
public void eat()
{
System.out.println("eat dog");
}
});
}
}
复制代码
作者:
樱花飘过
时间:
2015-8-19 12:09
new Inter() {
public void method() {
System.out.println("method");
}
};
楼主。你只是重写了方法,并没有调用method
作者:
dk_mrbai
时间:
2015-8-19 12:09
学安卓的用的多,EE的话用得少
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2