/*
匿名内部类
定义: 定义在内种无名称的类
好处:简化书写
前提: 必须存在继承或者实现关系才能使用
适用:匿名内部类一般用于实参
*/
abstract class Animal
{
public abstract Animal run();
public abstract void sleep();
}
class Outer
{
public void print()
{
//需求:在方法的内部定义一个类继承Animal类,然后调用run方法
//解决方式一:局部内部类:
/*
class Dog extends Animal
{
public void run()
{
System.out.println("我有四条腿跑的很快");
}
}
Dog d1 = new Dog();
d1.run();
*/
//解决方式二: 匿名内部类:匿名内部类仅仅是没有名称而已
/*
new Animal()
{
public Animal run()
{
System.out.println("我有四条腿,我跑的很快");
return this; //返回当前对象,供访问替他变量
}
public void sleep()
{
System.out.println("狗狗在睡觉");
}
}.run().sleep();
*/
//解决方法三:使用多态的方式
Animal a = new Animal() //多态
{
public Animal run()
{
System.out.println("我有四条腿,我跑的很快");
return this; //返回当前对象,供访问替他变量
}
public void sleep()
{
System.out.println("狗狗在睡觉");
}
public void bite() //特有的方法 无法通过多态访问,如果出现了这种情况,只能通过局部内部类来解决;
{
}
}
}
}
class Demo5
{
public static void main(String[] args)
{
Outer o1 = new Outer();
o1.print();
}
}