09.匿名内部类的概述和格式

匿名内部类

  • A:作用:匿名内部类是创建某个类型子类对象的快捷方式。
  • B:格式:
new 父类或接口(){
    //进行方法重写
};

代码演示

//已经存在的父类:
public abstract class Person{
    public abstract void eat();
}
//定义并创建该父类的子类对象,并用多态的方式赋值给父类引用变量
Person  p = new Person(){
    public void eat() {
        System.out.println(“我吃了”);
}
};
//调用eat方法
p.eat();

使用匿名对象的方式,将定义子类与创建子类对象两个步骤由一个格式一次完成,。虽然是两个步骤,但是两个步骤是连在一起完成的。
匿名内部类如果不定义变量引用,则也是匿名对象。代码如下:

new Person(){
    public void eat() {
        System.out.println(“我吃了”);
}
}.eat();
package com.itheima_03;

/*
 *  匿名内部类:
 *      可以把匿名内部类看成是一个没有名字的内部类
 *      定义在方法当中
 *      必须在定义匿名内部类的时候创建他的对象
 *  格式:
 *      new 类/接口()  {
 *          如果是创建了继承这个类的子类对象,我们可以重写父类的方法
 *          如果是创建了实现这个接口的子类对象,我们必须要实现该接口的所有方法
 *      };
 * 
 *  原理:而是创建了继承这个类的子类对象或者是创建了实现这个接口的子类对象
 */
public class InnerDemo4 {
    public static void main(String[] args) {
        Outer o = new Outer();
        o.method();
    }
}

interface Inner {
    public void function();
}

class Outer {
    public void method() {

        /*
         * new Inner() {
         * 
         * @Override public void function() { System.out.println("function"); }
         * 
         * }.function(); }
         */

        Inner i = new Inner() {
            @Override
            public void function() {
                System.out.println("function");
            }
        };
        
        i.function();
        i.function();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,793评论 8 265
  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,811评论 0 14
  • 1、什么是存储过程?大多时候,我们都是对一个表或者多个表的单条语句进行操作,但在实际生活中,我们有可能对多个表的多...
    莫问以阅读 412评论 0 0
  • 端午节有感 岁岁端阳远望亲,年年在外不由身。 离乡万里忧谁解,粽子生吞掩内心。
    福灮月影阅读 223评论 1 5
  • 第七课作业: 如果创作类型小说,你偏好哪一种?这一类型中给你印象最深刻的是哪一部作品?请评价此部作品,不低于200...
    艺小姐阅读 226评论 3 3