黑马程序员技术交流社区
标题:
内部类的调用疑问!求解答。
[打印本页]
作者:
黑马周磊
时间:
2012-11-8 15:14
标题:
内部类的调用疑问!求解答。
interface Inter
{
void method();
}
class Test
{
static class Inner implements Inter
{
public void method()
{
System.out.println("method run");
}
static Inter function()
{
return new Inner();
}
}
}
class InnerClassTest
{
public static void main(string[] arge)
{
Test.function().method(); // 这句代码,我没理解,毕老师的视频也看了几遍,还是有点糊涂。求解释。
}
}
作者:
杨政
时间:
2012-11-8 15:20
Test.function()是返回一个内部类对象,然后Test.function().method()调用内部类实现的方法。
Test.function()相当于是创建了一个内部类对象。
作者:
田建
时间:
2012-11-8 15:21
首先,Test.function()就是类调用里面的静态方法,没什么说的,主要的是这个方法返回的是一个类类型(Inner,而Inner实现了Inter,方法声明直接用Inter,此处用到了多态),既然得到了Inner的对象,那么直接调用它实现了的Inter里面的方法method(),整个过程就成了这句:Test.function().method();
作者:
李刚
时间:
2012-11-8 15:54
应该是 Test.Inner.function().method();
外部类先调用内部类,接着调用内部类静态方法function,返回Inner对象,调用method
作者:
jerry2627
时间:
2012-11-8 16:58
因为Test类里面的方法都是静态的,所以可以直接通过类名来调用方法。
而Test.function()调用后返回了一个内部类Inner的对象。因此 Test.function().method()这句话就相当于
new Inner().method().
作者:
惠晖
时间:
2012-11-8 17:54
Test.function().method(); Test.这个代表的是类名 因为函数是静态的 所以可以用类名直接调用 Test.function() 类名.方法 就得到了inter这个对象 对象 就可以直接调用方法了
作者:
陈军
时间:
2012-11-15 10:45
Test类的function()是静态的所以可以通过类名访问。
首先Test.function()这句返回一个Inner类型的实例对象,而Inner类有method()方法,所以就可以直接调用 method()
Test.function().method(); 这句话其实是下面这2句话的合并。
Inner in=Test.function();
in.method();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2