黑马程序员技术交流社区

标题: 匿名内部类 好难好复杂怎样才能学好 [打印本页]

作者: 冯利    时间: 2014-12-28 20:19
标题: 匿名内部类 好难好复杂怎样才能学好
如题,最近一直在看毕向东的视频,前面的都还行,就是到了后面,面向对象这块有点晕菜的了。看视频还是可以看明白的就是一到自己动手的时候就开始各种不会,要不然就是写出来的东西各种报错的,简直是无语死了,各位大神都是怎么过来的。自学到第十天匿名变量这一块,代码完全不理解啊。求开导。。。。
作者: qig123    时间: 2014-12-28 21:16
匿名内部类,  其实就是简化了类的写法而已,没有什么特别的.
比,  我有一个抽象类, 然后我老老实实的写了一个子类继承它,再重写它的方法.
然后测试类里面, 让父类引用来调用子类对象(多态).来调用方法.   这样写很标准,很完美.        如果这个对象只调用一次,那么我创建一个类来继承它,...然后各种操作   这实在浪费.   于是就有了匿名内部类了,
直接在测试类来调用它    Person p = new Person(){....重写方法};    p.方法;       我个人感觉匿名内部类,就是把子类浓缩在一个大括号里面
.........
作者: 后悔药    时间: 2014-12-28 21:40
先从头到尾看一遍,可以囫囵吞枣地浏览一 遍,再查缺补漏地看一遍
作者: 只会金克斯    时间: 2014-12-28 21:52
不管什么代码 过看几遍 也许就懂了
作者: zqbemail    时间: 2014-12-28 22:21
学会改变理解方法,改变三观,才能更好的学习。
我一开始看的时候,匿名类和内部类完全搞不懂,不过不用担心,直接往后看,看完再回头把这个看一下,自然就懂了。
内部类:就是在类中定义类。即在class{}里面再加一个变成:class{ class{}};也可以在方法执行体里面。
匿名对象:就是没有名字的对象,直接创建的,如:Person p = new Person() 左边叫类的引用,右边叫对象,如果只要右边而没有左边的类的引用,就叫匿名对象:new Person()。

匿名内部类就是上面两者的综合体.
作者: outsider1020    时间: 2014-12-29 08:45
楼主要加油了啦。。。。
作者: 冯利    时间: 2014-12-29 12:21
zqbemail 发表于 2014-12-28 22:21
学会改变理解方法,改变三观,才能更好的学习。
我一开始看的时候,匿名类和内部类完全搞不懂,不过不用担 ...

恩恩,多谢。。。。
作者: duluhua    时间: 2014-12-29 13:30
匿名内部类,字面上理解就是:没有名字的定义在类内部的类。
先说匿名:通常Person p = new Person() ;这句话的意思是给对象new Person()起一个名字叫做p。如果是匿名的话肯定就没有Person p了   也就是说只有new Person()
再说内部:通常定义类都是建立一个。.java文件,而类名就是文件名,这不是内部类,顾名思义,内部 内部就是定义在类的内部的类。
联合起来:匿名内部类就是:定义在类的内部,且没有名字的类。那么是什么情况呢。new Person()是一个没有名字的对象。而匿名内部类其实就是一个对象,注意它不是一个类,即使称呼为匿名内部类,其实是一个对象。

类中肯定有属性和方法,那么匿名内部类肯定也不例外,如何定义匿名内部类的方法呢。就是在对象后面直接写,如:
new Person(){
      public void talk(){//这里就是匿名内部类的方法
           System.out.println("我是匿名内部类的方法");
     }
}
接下来的问题就是,怎么使用匿名内部类?通常我们使用一个类,都是使用其对象,而最终的目的其实是使用里面的方法和属性。使用   对象.方法名  的方式来调用。
那么匿名内部类如何使用呢,其实也是遵循  对象.方法名的方法,比如上面的例子,我们可以这么调用里面的方法:
new Person(){
      public void talk(){//这里就是匿名内部类的方法
           System.out.println("我是匿名内部类的方法");
     }
}.talk();//这一在.talk()之前的new Person(){}  其实就是一个对象.  对象.talk() 就是调用对象的方法。

匿名内部类其实是一个对象~!!!!!!!!!!!!!!!!!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2