黑马程序员技术交流社区

标题: 内部类使用问题 [打印本页]

作者: 杨盼    时间: 2012-2-26 21:06
标题: 内部类使用问题
为什么需要内部类,什么时候可以使用内部类,求详解
作者: 朱皓    时间: 2012-2-26 21:27
内部类就是在一个类的内部定义的类,内部类中不能定义静态成员
内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中
内部类的好处是不用创建对象方便的访问外部类中的私有属性,从而减少代码
作者: 唐学松    时间: 2012-2-26 21:31
如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个 方法的名称,参数相同,你应该怎么办?
这时候,你可以建一个内部类实现这个接口。此乃内部类的作用。
由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直 接实现这个接口的功能。
1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。
2. 对于同一个包中的其他类来说,内部类能够隐藏起来。
3.匿名内部类可以很方便的定义回调。
4.使用内部类可以非常方便的编写事件驱动程序。

作者: 杨盼    时间: 2012-2-26 21:42
不要书上写的,用大白话介绍介绍,简单程序,加注释滴
作者: 沈样    时间: 2012-2-26 21:54
不要刻意定义内部类,内部类好处就是能访问类的私有变量,其他跟正常类没区别
作者: 杨盼    时间: 2012-2-26 22:07
沈样 发表于 2012-2-26 21:54
不要刻意定义内部类,内部类好处就是能访问类的私有变量,其他跟正常类没区别 ...

好吧,以后碰到使用的时候再具体了解吧,现在弄太头疼了,看了半天都没转过去
作者: 王康    时间: 2012-2-27 10:48
一、 定义
放在一个类的内部的类我们就叫内部类。
二、 作用
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);

  }

  }

  }

  }





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