java基础之匿名内部类

内部类:
  概述: 类里边还有一个类, 里边那个类叫内部类, 外边那个类叫外部类.
 

分类:
  成员内部类: 定义在成员位置的内部类.
  局部内部类: 定义在局部位置的内部类.

格式:
  new 类名或者接口名(){
    //重写类或者接口中 所有的 抽象方法;
  };

本质:
  就是一个继承了类或者实现了接口的 匿名的子类对象. 匿名内部类不是类, 而是子类对象.

匿名内部类的实际应用:
  1) 当对 对象方法(成员方法) 仅调用一次的时候.
  2) 可以作为方法的实参进行传递.

建议:
  当接口中或者抽象类中的 抽象方法仅有一个的时候, 就可以 考虑使用匿名内部类.

代码说明:

public class DemoClass { //外部类

    String name;    //成员变量

    class Inner1 {    //成员内部类

    }

    //成员方法
    public void show() {
        int num = 10;    //局部变量, 基本类型

        Object obj = new Object();    //局部变量, 引用类型

        //局部内部类.   局部变量, 引用类型
        class Inner2{

        }
    }
}

应用举例:

public static void main(String[] args) {
    // 对, Jumpping#jump(); 调三次.
    //1) 当对 对象方法(成员方法) 仅调用一次的时候.
    Jumping jm = new Jumping() {        //多态
        @Override
        public void jump() {
            System.out.println("我会跳");
        }
    };
    jm.jump();
    jm.jump();
    jm.jump();                                             

    //2) 可以作为方法的实参进行传递.
    show(new Jumping() {                                   

        @Override
        public void jump() {
            System.out.println("我会跳, 可以作为方法的实参进行传递");
        }
    });
}                                                          

public static void show(Jumping jm) {
    jm.jump();
}                                                          

public interface Jumping {
    final public static int num = 10;

    public abstract void jump();
}
public static void main(String[] args) {                  /*
     *  通过匿名内部类实现.
     *  new 类名或者接口名(){
         //重写类或者接口中 所有的 抽象方法;
        };
     */
    new Animal() {
        public void eat() {
            System.out.println("我是匿名内部类的方式实现的, 猫吃鱼");
        }
    }.eat();
}                                                         

/**
 * 抽象类: Animal
 * @author
 *
 */
public abstract class Animal {
    public abstract void eat();
}

原文地址:https://www.cnblogs.com/Alex-zqzy/p/9153747.html

时间: 2024-10-12 07:36:33

java基础之匿名内部类的相关文章

java基础04 匿名内部类

内部类 (1)把类定义在另一个类的内部,该类就被称为内部类. 举例:把类B定义在类A中,类B就被称为内部类. (2)内部类的访问规则 A:可以直接访问外部类的成员,包括私有 B:外部类要想访问内部类成员,必须创建对象 (3)内部类的分类 A:成员内部类 B:局部内部类 (4)成员内部类 A:private 为了数据的安全性 B:static 为了访问的方便性 成员内部类不是静态的: 外部类名.内部类名 对象名 = new 外部类名.new 内部类名(); 成员内部类是静态的: 外部类名.内部类名

JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.csdn.net/m366917 我们来继续学习多线程 Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock Lock void lock():获取锁 v

java基础2:抽象类、接口与多态

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

java基础问题总结

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派生类可以从它的基类那里继承方法和实例变量,并

java基础之内部类

java内部类,本是非常基础的,在分析一些开源框架源码时候或者看jdk源码的时候,就会发现用到大量的内部类.但是在实际工作中,尤其对于新手来说,根本不知道内部类有什么用处.说白了还是对内部类的基本原理不够清晰,没有掌握好这个基础,所以才不知道内部类有什么用处. 本人也是一边总结基础一边学习一边成长中. 关于内部类: java有四种内部类: ①静态内部类(static inner class) ②成员内部类(member inner class) ③局部内部类(local inner class)

java基础8:GUI

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Java基础面试题集(二)

Java程序员面试题集(1-50) 一.Java基础部分 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. 2)继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类). 3)封装:通常认为封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面.面向

黑马程序员——java基础——内部类

 黑马程序员--java基础--内部类 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 内部类 如果A类需要直接访问B类中的成员,而B类又需要建立A类的对象.这时,为了方便设计和访问,直接将A类定义在B类中.就可以了.A类就称为内部类.内部类可以直接访问外部类中的成员.而外部类想要访问内部类,必须要建立内部类的对象. 内部类的访问规则 1,内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有

四、Android学习第四天——JAVA基础回顾(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的第四天,在程序中已经遇到了JAVA中以前不常用的一些知识点,赶紧回顾复习一下,打下基础 这里就做个简单的小结: 一.匿名内部类 匿名内部类说白了就是个没有被命名的JAVA类 在以下条件下使用匿名内部类比较适合: ①只用到该类的一个实例时 ②类在定义后被马上用到 ③类非常小(SUN推荐是在4行代码以下