昨天晚上听到潘老师解答邢彦年学长的问题,听了半天也是云里雾里,毕竟身为一个“假的”计算机专业的学生,我什么都不知道,什么匿名类,匿名函数......这些我都没印象了,我只记得那位教面向对象程序设计的老师一节课能讲60多页,六页的知识用两句话就能讲完,如今既然接触到了这个东西就得学明白了。java
new <父类或者接口名> (<参数列表>) { 成员定义} ;
interface hello { String start(); } public class OK { public String hello() { hello sentence =new hello() //这个地方就是匿名类 { String start() { return "hello world"; } } return sentence; } }
经过代码看出,实际上hello是一个接口,自己接口是不能直接new的,可是呢在new的时候,hello这个接口后面带了一对花括号,那么这个就表示实际上如今new的是这个接口的实现类。可是发现,这个实现类是没有名字的,因此这个实现类叫匿名类。多线程
class Add { public int add(int a, int b) { return a + b; }; } class Demo { int c = 6; Add add = new Add() //匿名类 { public int add(int a, int b) { return super.add(2,3) + c; } }; }
这里的匿名类用到了类外的变量c,上文中的变量能够在匿名类中使用。那么上面的问题也就解决了,上面的类传入了参数klass,那么匿名类就能够直接使用该参数。ide
这篇博客写了很久,一开始一点都看不懂,面对许多专业名词,我真的是一脸懵,是真的一脸懵,后来问了问学长,总算是理解了那么一点,但愿此次的学习能给之后带来许多便利吧。函数
感谢这些文章的做者的分享
java匿名类的定义
匿名类
Java之匿名内部类详解学习