1.不能有构造方法 2.不能定义任何静态成员,方法 3.不能是public.protected,private,static 4.一定是在new的后面,用其隐含一个接口或者实现一个类 5.匿名内部类为局部的,所以局部内部类的所有限制都对其生效 * */ //(1.继承式) public void print11(){ CatGame cat=new CatGame(){ public void game(){ System.out.println("猫玩"); } }; cat.game(); } //*(2.接口式) public void print2(){ Eat e=new Eat(){ @Override public void eat() { System.out.println("匿名类的 接口式"); } }; e.eat(); } //(3.参数式) public void print3(Eat eat){//传入接口 eat.eat(); } } interface Eat{ public void eat(); } abstract class CatGame{ public abstract void game(); } /* 方法内部类的引用的变量 必须是常量(final) 为什么用final呢? final 修饰变量是 常量,会把变量进入到常量池,延长生命周期,以免被销毁 jdk1.8 可以不写final ,系统会默认 final. */