美文网首页
匿名类,匿名内部类

匿名类,匿名内部类

作者: 左右_d488 | 来源:发表于2018-11-13 19:21 被阅读0次
很多在学习JAVA基础的时候总会遇到一个问题,这个匿名内部类为什么只能用一次呢?他到底是什么玩意儿?为什么这里会new一个接口???这什么呀这是!

首先我们来看一下内部类的定义:

  • 在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外部类】
  • 如果想要通过一个类来使用另一个类,可以定义为内部类。【比如苹果手机类,苹果手机类中的黄金版的是特别定制的】
  • 内部类的外部类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外部类中的方法。【不论是静态还是非静态的,内部类都可以直接调用外部
  • 内部类的类体中不可以声明类变量和类方法
  • 内部类可以由外部类使用外部类中在函数中创建内部类对象来使用,如果内部类的权限是非私有,非静态的,就可以在外部其他程序中被访问到,就可以通过创建外部类对象完成;如果内部类是静态的,非私有的,静态成员可以直接类名调用,非静态成员通过创建外部类对象使用。

再来看一下匿名类的定义:

  • 匿名类,就是没有名称的类,其名称由Java编译器给出,一般是形如:外部类名称+$+匿名类顺序,没有名称也就是其他地方就不能引用,不能实例化,只用一次,当然也就不能有构造器。
  • 匿名类就是利用父类的构造函数和自身类体构造成一个类。
  • 匿名类可以继承父类的方法,也可以重写父类的方法。
  • 匿名类可以访问外部类的成员变量和方法,匿名类的类体不可以声明称static成员变量和static方法。
  • 匿名类由于是一个new的结果,所以其实可以赋值给一个父类对象。因此可以分为两种匿名类,成员匿名类和局部匿名类(作为函数参数)

上文都说匿名内部类就是没有名字的内部类,哪个类没有名字呢?好多文章都是直接告诉你什么什么是匿名内部类,如下面:

我们一般会用来做参数的传递, 直接用接口来做

public interface D {
     void run();
     }
public class B{
@Override
public void run(D d) {
      d.run();
     }
   }

看到这里是不是还是很疑惑,为什么接口也能new了呢?其实不然,在我们写一个内部类的时候,我们是省略了一些东西的

public class cryptonym {
    public static void main(String[]args) {
        B b=new B();
        //调用时使用匿名类创建匿名对象
        b.show(new D(
            public void run() {
                System.out.println("hello");){
            }
        });
    }
}

这样来看是不是就明了许多了?其实本意就是继承了D这个接口之后,重写了其中的方法。只不过我们再代码中对这个类使用的次数不多。所以我们不需要再去写一个继承的类,来加大JVM的工作量,是不是很有意思。大家还有更多想知道的内容欢迎在下方留言或者加入我们的群来跟我一起探讨一下(850353792)

相关文章

  • 每日一点(1)

    匿名类 内部类 匿名内部类 匿名类(可以是接口 抽象类 普通类):1:无需创建对象2:直接重写方法 内部类:若一...

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java匿名内部类

    导语 学完匿名内部类就懂的情书。 主要内容 接口与抽象类和匿名内部类的关系 具体内容 匿名内部类也就是没有名字的内...

  • Android监听按钮事件的几种方式

    a.匿名内部类方式 b.外部类方式 c.实现接口方式 (1)匿名内部类方式实现,跟javascript的匿名函数类...

  • 热修复原理拆解个人笔记(一)

    源于sophix文档: 内部类/外部类java编译器对内部类的处理 匿名内部类匿名内部类 类加载类加载时间 fin...

  • java中的匿名内部类

    匿名内部类是局部内部类的一种特例. 匿名内部类,适用使用一次的类 1.匿名内部类本身没有构造器,但是会调用父类的构...

  • 匿名内部类

    1.匿名内部类是内部类的简写格式。2.定义匿名内部类前提:内部类必须是继承一个类或者实现接口。3.匿名内部类格式:...

  • 匿名类,匿名内部类

    首先我们来看一下内部类的定义: 在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外...

  • Button和ImageButton的监听事件

    监听事件实现的方式: 1、匿名内部类的实现2、独立类的实现3、接口方式实现 一、匿名内部类 通过匿名内部类,直接在...

  • Java--内部类的分类-3(匿名内部类)

    匿名内部类  匿名内部类适合那种只需要使用一次的类。比如:键盘监听操作等等。 语法: 【示例】匿名内部类的使用 注...

网友评论

      本文标题:匿名类,匿名内部类

      本文链接:https://www.haomeiwen.com/subject/yeokfqtx.html