Java——匿名内部类

1,匿名内部类
(1) 就是内部类的简化写法
(2) 前提
存在一个类或者接口,并且有方法重写(这里的类可以是具体的类也可以是抽象类)
(3) 格式
new 类名或者接口名(){方法重写};
(4)本质:是一个继承了类或者实现了接口的子类匿名对象
2,如何调用匿名内部类的成员方法呢
(1) 法一:每一种格式调用一个
(2) 法二:用类或者接口接受该子类的对象。多肽思想
3,匿名内部类在开发过程中的使用场景合与只使用一次的场景,用完就销毁了,不像具名类一样长期存在。多使用于安卓方面,因为手机内存小,运行速度较快,用完就销毁,不占内存,速度也快
例如:
public abstract class Animal {
//成员变量
private String name;
private String color;
private int age;
//抽象类中可以存在构造方法

public Animal(String name, String color, int age) {
    this.name = name;
    this.color = color;
    this.age = age;
}

public Animal() {
}
//成员方法
public abstract void eat();
public abstract void sleep();
//非抽象方法
public Animal show(){
    return this;
}

}
++++++++++++++++++++++++++++++++++++++++++++++
public interface ITraining {
void iump();
}

++++++++++++++++++++++++++++++++++++++++++++++
public class AnimalDemo {
public static void main(String[] args){
//定义一个匿名的,并且是main()内部的类,所以叫匿名内部类
//调用匿名内部类的成员方法一,每种格式调用一个
new Animal(){

        @Override
        public void eat() {

        }

        @Override
        public void sleep() {

        }
    }.eat();

    new Animal(){

        @Override
        public void eat() {

        }

        @Override
        public void sleep() {

        }
    }.sleep();
    System.out.println("================");
    //调用匿名内部类的成员方法二,用类或者接口接收该子类对象,多态思想
    // 父类的引用指向了子类对象   多态
    Animal animal=new Animal(){

        @Override
        public void eat() {

        }

        @Override
        public void sleep() {

        }
    };
    animal.sleep();
    animal.eat();
    System.out.println("================");
    //匿名内部类的使用场景合与只使用一次的场景,用完就销毁了,不像具名类一样长期存在。
    //使用与安卓方面,因为手机内存小,运行速度较快,用完就销毁,不占内存,速度也快
    method3(new ITraining() {
        @Override
        public void iump() {
            System.out.println("匿名的接口中的jump()");
        }
    });
}
public static void method3(ITraining it){
    it.iump();
}

}
4,匿名内部类的面试题
/**

  • 要求控制台输出 Hello World
    */
    interface Inter {
    void show();

}

class OuterOne{
//补全代码
public static Inter method(){
return new Inter(){
@Override
public void show() {

      }
  };
}

}

class OuterDemo{
public static void main(String[] args){
OuterOne.method().show();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值