不用implements关键字是因为它都创了个Inter对象===》return new Inter()是因为你定义 function() 方法的时候要求了返回值是inter类型,而你看到 return new Inter()后面没有分号而是大括号,里面写着method()方法,这个方法复写了接口里的方法。意思大概是创建了个匿名创对象,这个对象里有个method()方法里写的是System.out.println("haha,it is easy");
楼上的说的很棒啊,
09.static Inter function() 这个是方法,不是内部类
11.return new Inter() {...} 这个是上面方法的返回值
返回值本身才是内部类,而且是匿名内部类,
通俗一点的说法就是 new Inter()【 = new X implements Inter ()】 { @Override... }
中间那段被省略的就是所谓的匿名内部类,X就是这个内部类的名字(我自己起的)
interface Inter
{
void method();
}
class Test
{
//补足代码,通过匿名内部
}
static Inter function()//这个名字是什么意思?为什么不用implements关键字呢?
//这里的Inter意思是function()这个函数返回了一个Inter类型的一个子类匿名对象
{
return new Inter()//为什么要用上return呢?
//返回值不是void,是Inter类型的子类匿名对象,当然要写return了
//return和;之间看做为一个整体,即匿名对象
{
public void method()
{
System.out.println("haha,it is easy");
}
}; //这个地方不是应该.method的吗?和上面那个return有关系吗?
// ";" 这个符号表示return语句结束
}
class InnerClassTest
{
public static void main(String[] args)
{
Test.function().method();//为什么上面的Inter function到这下面就没有Inter了呢?
//function()这个函数被成员修饰符static修饰,所以可用“类名.函数名”调用即Test.function()
//Test.function()返回了一个Inter的类型的子类对象,这个对象又调用了method()方法
}
}
===========================================
return语句返回了一个Inter类型的子类匿名对象
这里的匿名对象把接口覆写了……