黑马程序员技术交流社区

标题: 什么是内部类?怎么创建内部类的对象? [打印本页]

作者: Zhang_qian    时间: 2012-5-4 09:00
标题: 什么是内部类?怎么创建内部类的对象?
怎么创建内部类的对象?
作者: 隋营营    时间: 2012-5-4 09:11
内部类:顾名思义就是在类的内部写一个类。
为什么需要内部类:若一个类与包装类无关,且与包装类中的其它方法无关,可写成内部类
什么是内部类:在A类内部(但是A类所有方法外部)定义B类,则B类是A类的内部类,A类是B类的外部类。
    内部类可以看作是外部类的成员
                        但是匿名内部类是在外部类的方法内部的。
怎样创建内部类对象:先创建外部类对象,再创建内部类对象。
                                  或在一个方法new 内部类对象,然后在需要时调用这个方法

作者: 姚鑫    时间: 2012-5-4 09:18
java中,可以在一个类的内部定义另一个类,这种类称为内部类。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。

class Outer
{
private int x = 3;
class Inner//内部类
{
  //int x = 4;
  void function()
  {
   //int x = 6;
   System.out.println("innner :"+Outer.this.x);
  }
}
/*外部类要访问内部类,必须建立内部类对象。*/
void method()
{
  Inner in = new Inner();
  in.function();
}
}

class  InnerClassDemo
{
public static void main(String[] args)
{
   Outer.Inner in = new Outer().new Inner(); //创建内部类的对象
   in.function();
}
}

作者: 于潇    时间: 2012-5-4 09:31
定义在一个类内部的类叫内部类,内部类可以根据使用和情况分为4种,分别是成员内部类,局部内部类,静态内部类,匿名内部类。
      成员内部类,是一个可以看成是外部类的非静态成员的内部类。成员内部类与普通的成员没什么区别,可以与普通成员一样进行修饰和限制。
      在外部类的内部(非静态的)创建一个内部类的对象可以直接使用Inner i=new Inner();
      在外部类的外部创建一个内部类的对象,需要首先建立一个外部类对象,然后再生成一个内部类对象。这是因为内部类相当于外部类的成员,而成员只有在所属对象存在的情况下才存在。内部类的类名是外部类类名.内部类类名,创建内部类对象有两种语法,如下:
                 <外部类类名>.<内部类类名> 引用变量=<外部类对象引用>.new   内部类构造器
                 <外部类类名>.<内部类类名>引用变量=new <外部类构造器>.new 内部类构造器
   
    在方法中定义的内部类称为局部内部类,它是一个只有在局部有效的内部类。局部内部类作用域与局部变量相同,只在其所在的语句块中有效,所以只能在其有效的位置访问或创建其对象。

    静态内部类其实已经脱离了外部类。在创建静态内部类对象时也不需要外部类对象的存在。其实质是一个放置在别的类内部的普通类。而关键字static也只是说明其在创建对象时不依赖于外部类对象的存在,并不是说这个类本身是静态的。

    匿名内部类是一种特殊的局部内部类,这种内部类没有类名。该类适用于只使用一次并且不需要多次创建对象的类。使用匿名内部类可以使类代码与创建对象同时完成,这样做不但方便,还提高代码的可维护性。
作者: 赵方明    时间: 2012-5-4 10:07
内部类是定义在其他类内部的类

作者: 崔仁军    时间: 2012-5-4 11:26
1  内部类  :就是指在类中在定义一个类   
2  内部类有四种各自创建内部类的对象的方式不一样
  a   静态内部类(static inner class ):只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为:  例如  :OuterClass.InnerClass inner = new OuterClass.InnerClass();
   b   成员内部类(member inner class ):可以访问外部类的静态与非静态的方法与成员变量。生成成员内部类对象的方式为: 例如 :OuterClass.InnerClass inner = new OuterClass().new InnerClass();
   c   局部内部类(Local Inner Class):定义在方法当中,只能访问方法中声明的final 类型的变量。生成成员内部类对象的方式是  先new出外部类的对象然后在调用内部类所在外部类的那个方法;
  d  匿名内部类(Anonymous Inner Class ):匿名内部类会隐式地继承一个父类或实现一个接口。
作者: τ、高童鞋ゝ    时间: 2012-5-4 12:05
在类里面定义的类称之为内部类(Inner Class),内部类是外部类的一个成员
创建内部类对象时必须先创建一个外部类对象,通过一个外部类对象才能创建内部类对象。
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();内部类可以直接访问外部类的成员,而外部类不能直接访问内部类的成员。访问方式:外部类名.this.成员名
内部类可以访问外部类成员,因为在使用内部类时一定会有外部类对象,且只对应一个。




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