匿名内部类--实现接口或一个类

匿名内部类特点

  1. 匿名内部类没有类名,它也就不能定义出构造器,所以它没有自己的构造器。
  2. 匿名内部类是隐式地继承了一个特定的类,或者隐式地实现了一个特定的接口。
  3. 匿名内部类无法定义静态成员和静态方法。
  4. 匿名内部类不能用public,protected,private,static修饰。
  5. 匿名内部类只能创建一个实例,它本身就是是一个实例。

匿名内部类的格式: 必须是类或者接口

格式:

new 类名/接口名(){
    重写抽象方法
}
  • 如果是类的话,相当于子类的实现类

    • Animal是一个父类,eat是他的抽象类

    • 创建之后,只是相当于创建子类对象对抽象方法进行了重新,并不会立即执行

    • 第一种调用方法

    • //整体就等效于:是Animal父类的子类对象
      new Animal(){
          @Override
          public void eat() {
              System.out.println("狗吃肉");
          }
      }.eat(); 	//通过子类对象调用方法
      
    • 第二种调用方法 用父类的引用作接收了子类对象——多态的体现形式

    • Animal a = new Animal(){
          @Override
          public void eat() {
          System.out.println("狗吃肉");
          }
      }
      a.eat();
      
  • 如果是接口的话,相当于接口的实现类

    • 接口不能被实例化,只能通过多态的形式,让子类实例化

    • Inter是一个接口名

    • new Inter({
          @Override
          public void method() i
         		system.out.println("我是重写后的method方法");
          }
      }.method();
      
posted @ 2022-04-24 14:38    阅读(384)  评论(0)    收藏  举报