/*
匿名内部类:
1,匿名内部类其实就是内部类的简写形式
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口
3,匿名内部类的格式:new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象,而且这个对象有点胖,可以理解为带内容的对象
5,匿名内部类中定义的方法最好不要超过3个。
*/
abstract class AbsDemo
{
abstract void show();
}
class Outer
{
int x = 3;
/* class Inner extends AbsDemo
{
void show()
{
System.out.println("show:"+x);
}
} */
public void function()
{
// new Inner().show();
new AbsDemo()
{
void show()
{
System.out.println("x==="+x);
}
}.show();
}
}
class InnerClassDemo4
{
public static void main(String[] args)
{
new Outer().function();
System.out.println("sdf");
}
}
interface Inter
{
void method();
}
class Test
{
//补足代码,通过匿名内部类
/* static class Inner implements Inter
{ public void method()
{
System.out.println("method run");
}
} */
static Inter function()
{
return new Inter()
{
public void method()
{
System.out.println("method run");
}
};
}
}
class InnerClassTest
{
public static void main(String[] args)
{
//Test.function();Test类中有一个静态的方法function。
//.method():function()这个方法运算后的结果是一个对象,而且是一个Inter类型的对象。
//因为只有是Inter类型的对象,才可以调用method方法;
Test.function().method();
// Inter in = Test.function();
// in.method();
show(new Inter()
{
public void method()
{
System.out.println("method show run");
}
});
}
public static void show(Inter in)
{
in.method();
}
}
class InnerTest
{
public static void main(String[] args)
{
new Object()
{
public void function()
{
}
}.function();
}
}