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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨盼 中级黑马   /  2012-2-26 21:06  /  2142 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么需要内部类,什么时候可以使用内部类,求详解

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 支持一下

查看全部评分

6 个回复

正序浏览
王康 黑马帝 2012-2-27 10:48:15
7#
一、 定义
放在一个类的内部的类我们就叫内部类。
二、 作用
1.内部类可以很好的实现隐藏
  一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
3.可是实现多重继承
4.可以避免修改接口而实现同一个类中两种同名方法的调用。

  匿名内部类是内部类的一种简化写法:return new Wrapper {

  ...

  };

  等价于:Wrapped extends Wrapper {

  ...

  }

  return new Wrapped();

  匿名内部类的作用不止这一点

  考虑一下这样的case:

  interface ICount {

  int count();

  }

  class Parent {

  int i = 0;

  int count() {

  return i++;

  }

  }

  有一个类Child,它既想继承Parent的count()方法,又想实现ICount接口中的count方法,这个时候怎么办呢?内部类就可以大显身手了

  class Child extends Parent {

  ICount getCount() {

  return new ICount {

  int i = 0;

  int count() {

  return (i *= 2);

  }

  }

  }

  }
回复 使用道具 举报
沈样 发表于 2012-2-26 21:54
不要刻意定义内部类,内部类好处就是能访问类的私有变量,其他跟正常类没区别 ...

好吧,以后碰到使用的时候再具体了解吧,现在弄太头疼了,看了半天都没转过去
回复 使用道具 举报
不要刻意定义内部类,内部类好处就是能访问类的私有变量,其他跟正常类没区别
回复 使用道具 举报
不要书上写的,用大白话介绍介绍,简单程序,加注释滴
回复 使用道具 举报
如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个 方法的名称,参数相同,你应该怎么办?
这时候,你可以建一个内部类实现这个接口。此乃内部类的作用。
由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直 接实现这个接口的功能。
1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。
2. 对于同一个包中的其他类来说,内部类能够隐藏起来。
3.匿名内部类可以很方便的定义回调。
4.使用内部类可以非常方便的编写事件驱动程序。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
内部类就是在一个类的内部定义的类,内部类中不能定义静态成员
内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中
内部类的好处是不用创建对象方便的访问外部类中的私有属性,从而减少代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马