A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 叶小伞 中级黑马   /  2016-4-9 23:35  /  3301 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
乍一接触匿名内部类感觉很不好接受,跟别的不是一个画风啊,大家有什么方式更好的理解,求分享。。。

最佳答案

查看完整内容

匿名内部类 不知道类名的实现或者继承。(只能创建对象时用这种方式) 就是在创建对象的同时 实现父类的抽象方法 例如有个接口 Inter 正常的实现 应该是 然后呢 可以 正常创建对象 匿名内部利用多态的特性 来创建对象 也只能这么做 因为并不知道这个类的名字 还是那个接口 匿名内部类创建对象 这里new的是Inter的子类对象 形式记住就好了 new 父类/接口(){ 实现该父类/接口的抽象方法};得到了该父类/接口的子类对象 ...

8 个回复

倒序浏览
匿名内部类 不知道类名的实现或者继承。(只能创建对象时用这种方式) 就是在创建对象的同时 实现父类的抽象方法
例如有个接口 Inter
  1. interface Inter{
  2.         void fun();
  3. }
复制代码


正常的实现 应该是  
  1. class IInter implements Inter{

  2.         @Override
  3.         public void fun() {
  4.         }
  5. }
复制代码

然后呢 可以 正常创建对象
  1. IInter i = new IInter(); //子类引用 指向子类对象
  2.                 Inter i = new IInter(); //父类引用 指向子类对象  (多态)
复制代码
匿名内部利用多态的特性  来创建对象 也只能这么做 因为并不知道这个类的名字
还是那个接口
  1. interface Inter{
  2.         void fun();
  3. }
复制代码

匿名内部类创建对象
  1. Inter i = new Inter() {
  2.                        
  3.                         @Override
  4.                         public void fun() {
  5.                         }
  6.                 };
复制代码

这里new的是Inter的子类对象   形式记住就好了 new 父类/接口(){ 实现该父类/接口的抽象方法};得到了该父类/接口的子类对象 却不知道这个子类的名字只能用父类/接口的引用接。理解多态的话 这个很好理解了。这么做的好处自己看笔记吧 很好理解的。 纯手打   要采纳啊亲!



回复 使用道具 举报
这个阶段记住就好等慢慢理解
回复 使用道具 举报
不会的先记住等讲师讲时好好理解
回复 使用道具 举报
暂且当做成员看待吧。。
回复 使用道具 举报
你确定是匿名类而不是匿名对象 ?
匿名对象

    没有名字的对象. 我们创建1个对象,不用指针去存储这个对象的地址.
    例如:
       [HMPerson new];

      调用new方法去创建对象.但是没有使用指针来接收这个方法的返回值.
      所以,创建的这个对象就没有指针指向,这个对象就没有名字.
      这个对象就叫做匿名对象.     匿名对象在创建的以后只能使用一次,是一次性的,其实意义根本不大,主要是让你理解什么内存管理的部分内容,例如野指针和僵尸对象
     野指针就是指向的对象已经被系统回收释放,不指向任何对象,那么这个指针变量就是野指针
    僵尸对象就是没有指针指向的对象,而这个对象并没有被回收,那么这个对象就是僵尸对象
    你也可以把匿名对象看成是一个僵尸对象,因为没有指针指向


回复 使用道具 举报
我们还没教,但我预习的时候看了一遍好像理解咯,过了几天忘了又看了一遍,然后昨天发现又忘了,就看了第三遍。今天我是记得匿名内部类是什么的
回复 使用道具 举报
刚学不会正常,想要记住,建议自己找些匿名内部类的练习。手动敲一些。这样容易记忆
回复 使用道具 举报
匿名对象, 匿名类,匿名内部类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马