匿名内部类:没有类名的类就称作为匿名内部类。
匿名内部类的好处:简化书写。
匿名内部类的使用前提:必须存在继承或者实现关系才能使用。
匿名内部类一般是用于实参。
abstract class Animal02{
public abstract Animal02 run();
public abstract void sleep();
protected abstract void bite();
}
class Outer{
public void print(){
//需求: 在方法内部定义一个类继承Animal类,然后调用run方法与sleep()。
/*
//局部内部类
class Dog extends Animal{
public void run(){
System.out.println("狗在跑..");
}
public void sleep(){
System.out.println("狗趴在睁开眼睛睡..");
}
}
//创建对象
Dog d = new Dog();
d.run();
d.sleep();
*/
//匿名内部类 :匿名内部类只是没有类名,其他的一概成员都是具备的。
// 匿名内部类与Animal是继承 的关系。 目前是创建Animal子类的对象.
Animal02 a = new Animal(){ //多态
//匿名内部的成员
public Animal run(){
System.out.println("狗在跑..");
return this;
}
public void sleep(){
System.out.println("狗趴在睁开眼睛睡..");
}
//特有的方法
public void bite(){
System.out.println("狗在咬人..");
}
};
a.bite();
a.run();
a.sleep();
}
}
public class Demo6
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
Outer outer = new Outer();
outer.print();
}
}
匿名对象: 没有引用类型变量指向的对象就称作为匿名对象。
匿名对象要注意的细节:
- 一般不会给匿名对象的属性赋值,因为永远都没法获取到。
- 两个匿名对象永远都不可能是同一个对象。
匿名对象好处:简化书写。
匿名对象的应用场景: - 如果调用一个对象的方法一次时,然后这个对象就不再使用,那么这时候可以使用匿名对象。
- 可以作为实参调用一个函数。