黑马程序员技术交流社区
标题:
匿名内部类的问题?????
[打印本页]
作者:
彭波
时间:
2013-4-12 16:14
标题:
匿名内部类的问题?????
本帖最后由 彭波 于 2013-4-13 22:19 编辑
interface Inter
{
void method();
}
class Test
{
/*
static class Inner implements Inter //内部类实现接口
{
public void method()
{
System.out.println("haha");
}
}
static Inter function()//注意返回的是Inter类类型的对象
{
return new Inner();
}
*/
//补足代码,通过匿名内部类
static Inter function()
{
return new Inter() //匿名内部类
{
public void method()
{
System.out.println("ha");
}
};
}
}
class InnerClassTest
{
public static void main(String[] args)
{
Test.function().method();
//Test.funtion():Test类中有function函数是静态的。
//.method():funtion这个方法运算后的结果是一个对象。而且是Inter类型对象。
//因为只有是Inter类型的对象,才可以调用method方法。
// Inter in = Test.function(); //这是干啥的啊?不是创建对象吧?求详解?
// in.method();
}
}
复制代码
作者:
王军行
时间:
2013-4-12 16:47
Inter in = Test.function(); //这是干啥的啊?不是创建对象吧?求详解?
你的 Test类中的function,返回的就是一个Inter接口的子类对象,只不过这个子类对象是用匿名内部类的方法来实例化的
function方法封装了一个创建Inter子类对象的功能能,该功能通过匿名内部类实现。
就是这个意思。就是你注释那部分代码的简化写法。
就是通过function方法创建了一个Inter的子类对象。
in.method();就是Inter的子类对象调用自己的method方法
作者:
CrazyProgram
时间:
2013-4-12 17:02
Inter in = Test.function(); //这是干啥的啊?不是创建对象吧?求详解?
首先是调用了Test.functions();表示调用了Test类中的functions()这个方法。
返回了一个Inter的对象,,因为实现了Inter的接口,必须实现他的非私有方法,
所以可以定义一个method()方法,
你这里用的是内部类的方法直接在返回的时候把method()这个新定义的方法返回了。。
也就是 return new Inter() //匿名内部类
26. {
27. public void method()
28. {
29. System.out.println("ha");
30. }
31. };
作者:
梁航斌
时间:
2013-4-12 17:20
Test 类当中的function()方法创建了Inter又实现了它的method()方法,所以Test.function();获得了Inter对象,所以可以in.method();调用他的方法
作者:
王大斌
时间:
2013-4-12 18:22
首先,
Inter in = Test.function(); //这是干啥的啊?不是创建对象吧?求详解?
Test.function()说明了这个function函数肯定是静态的毫无疑问
然后这个函数返回了一个Inter类型的引用,也就是说在这个函数中一定return了一个Inter对象或其子类的对象
而你写的方法中
static Inter function()
中不是正好这样吗,创建了一个匿名的内部类,并且返回这个匿名内部对象?
return new Inter() //匿名内部类
{
public void method()
{
System.out.println("ha");
}
};
还有疑问,建议再详细看看内部类的视频
作者:
黄玉昆
时间:
2013-4-13 08:35
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2