黑马程序员技术交流社区
标题:
匿名内部类的问题?????????
[打印本页]
作者:
彭波
时间:
2013-4-12 16:23
标题:
匿名内部类的问题?????????
本帖最后由 彭波 于 2013-4-13 22:20 编辑
老毕09天-04视频
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();
}
}
复制代码
Test.function().method();
相当于 Inter in = Test.function();
//这是干啥的啊?是不是创建对象吧?怎么没有new啊,求详解?
in.method();
.method():funtion这个方法运算后的
结果是一个对象
。而且是Inter类型对象。
因为只有是Inter类型的对象,才可以调用method方法。
凭啥说是function运算后结果是个对象啊,依据啥啊???我郁闷!!!
我看怎么像是function方法中调用method方法……
作者:
刘学明
时间:
2013-4-12 16:48
Inter in = Test.function(); 这句话就是给创建对象 ,因为Test.function函数中已经有了return new Inter() 这就说明了已经运用了new来创建了一个对象。
思想上不要固化一条语句只有new才可以创建对象 new已经在函数中出现 所以直接赋值给Inter in 这个Inter型变量就可以。
作者:
何俊森
时间:
2013-4-12 16:54
本帖最后由 何俊森 于 2013-4-12 16:56 编辑
return new Inter() // 匿名内部类
{
public void method() {
System.out.println("ha");
}
};
创建了一个实现了Inter接口的匿名内部类。 Test.function()表示调用了Test类的静态方法,返回值是一个实现了Inter接口的子类的实例,Test.function().method()。然后在调用了子类中的method()方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2