黑马程序员技术交流社区
标题:
看到匿名内部类看不懂了,求帮忙解释
[打印本页]
作者:
王骥
时间:
2015-6-15 23:06
标题:
看到匿名内部类看不懂了,求帮忙解释
class InnerDemo{
public static void main(String[] args){
Outer.function().method();//看不懂
}
}
interface Inter
{
public abstract void method();
}
class Outer
{
//还是看不懂
public static Inter function(){
return new Inter(){
public void method(){
System.out.println("匿名内部类");
}
};
}
}
复制代码
作者:
小黑啊
时间:
2015-6-15 23:12
哇,好高端的样子,看不懂,帮顶~~
作者:
YQC2015
时间:
2015-6-16 00:05
外部类访问内部类成员,要先建立内部类对象。
function()是静态方法,可以直接用类名调用,即Outer.function() ,function方法返回的又是内部类Inter的对象。可以理解为Outer.function()是内部类的对象,然后调用method方法。
Outer.function().method();其实是以下代码的简写:
Outer.Inter in = new Outer().new Inter(); //创建内部类对象
in.method();//调用内部类方法
复制代码
作者:
qian0217wei
时间:
2015-6-16 00:24
首先分析 Outer.function()证明function是一个静态方法,Outer.function().method();这里牵涉到链式调用可以肯定的function()返回的是一个可以调用method()的对象所以返回的是Inner对象!代码就是上面写的那样,理解匿名内部类的本质,就可以了!这样写可能好理解点
Inner in =new Inner(){
public void method()
{
System.out.println("hello method");
}
};//这就是接口多态,接口引用指向了子类实现的对象
return in;
复制代码
作者:
ARD
时间:
2015-6-16 01:20
没有名字的 Outer类 调用了 静态的function()方法 , 方法中返回一个实现Inner 接口的类,并调用该类中的 method()方法.
作者:
zlpiano
时间:
2015-6-16 17:20
Outer.function().method();
function( )返回一个匿名的Inter对象,因为覆写了method方法,实现了接口,所以接口Inter可以实例化,这个是匿名实现接口,但我认为不是内部类
作者:
zlpiano
时间:
2015-6-16 17:22
不管怎么说,接口Inter都是写在Outer外面的
作者:
一口老郭
时间:
2015-6-16 17:29
就是内部类实现了接口Inter。内部类放在静态方法里面被调用。这个是匿名内部类的基本格式把
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2