内部类
内 部 类
什么是 Java中的内部类·什么是内部类(Inner Class)?一定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。·为什么要定义内部类?内部类的主要作用?一1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问一2.内部类的方法可以直接访问外部类的所有数据,包括私有的数据一3.有时使用内部类更方便。·内部类可分为以下几种:一成员内部类、静态内部类、方法内部类、磨名内部类
什么是 Java 中的内部类 • 什么是内部类(Inner Class )? – 定义在另外一个类里面的类。与之对应,包含内部类 的类被称为外部类。 • 为什么要定义内部类?内部类的主要作用? – 1. 内部类提供了更好的封装,可以把内部类隐藏在外 部类之内,不允许同一个包中的其他类访问 – 2. 内部类的方法可以直接访问外部类的所有数据,包 括私有的数据 – 3. 有时使用内部类更方便。 • 内部类可分为以下几种: – 成员内部类、静态内部类、方法内部类、匿名内部类
成员内部类访问外部类中的a:99访问内部类中的b:2·最常见,也称为普通内部类。//外部类Outerpublic class Outerprivateint a =99;//外部类的私有属性//内部类Innerpublic class Innerintb=2;//内部类的成员属性public void test()(System.out.println("访问外部类中的a:"+a)System.out.println("访问内部类中的b:"+b);//测试成员内部类public static void main(String[ args)fOuter o=new Outer();//创建外部类对象,对象名为oInner i=o.new Inner(;//使用外部类对象创建内部类对象,对象名为ii.test();//调用内部类对象的test方法7
成员内部类 • 最常见,也称为普通内部类
成员内部类对举例的说明1、Inner类定义在outer类的内部,相当于outer类的一个成员变量的位置,Inner类可以使用任意访问控制符,如public、protected、private等;2、Inner类中定义的test(方法可以直接访问Outer类中的数据而不受访问控制符的影响,如直接访问outer类中的私有属性a;,3、定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去new一个内部类对象,即:内部类对象名=外部类对象.new内部类();。4、编译上面的程序后,会发现产生了两个.class文件OutersInner.classCLASS文件2014/6/213:02Outer.class2014/6/213:02CLASS文件其中,第二个是外部类的.class文件,第一个是内部类的.class文件成员内部类的.class文件总是这样:外部类名s内部类名.class
成员内部类 对举例的说明 • 1、 Inner 类定义在 Outer 类的内部,相当于Outer 类的一个成员 变量的位置,Inner 类可以使用任意访问控制符,如public 、 protected 、 private 等; • 2、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据, 而不受访问控制符的影响,如直接访问Outer 类中的私有属性a; • 3、 定义了成员内部类后,必须使用外部类对象来创建内部类对 象,而不能直接去 new 一个内部类对象,即: 内部类对象名= 外部类对象.new 内部类( ); • 4、 编译上面的程序后,会发现产生了两个.class 文件 ⚫ 其中,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件, 成员内部类的.class 文件总是这样:外部类名$内部类名.class
1//外部英Heloworla友情提示public class Helloworld(23/内部类Inner,夹Inner在类outer的内部40public class Inner f5//内部类的方法1、外部类是69publicvoid show)(不能直接使用7System.out.println("welcome to imooc!");8内部类的成员子91和芳法;10public void print()(611show();//外部类调用内部类的或方法子外部类不能直接访问内部类中的成员方法·2、如果外部131类和内部类具有相同的成员//外部类Outerpublic class Outer(变量或方法intb =1;/ /外部类中的成员属性内部类默认访//内部类Inner问首已的成赏public class Inner 变量或方法int b=2//内部类的成员属性b如果要访问外访问外部类中的成员属性bpublic voidtest()(部类的成员变System.out.println("访问外部类中的b:"+Outer.this.b);量,奇饮使角System.out.println("访问内部类中的b:"+b);this 关键字
友情提示 • 1、 外部类是 不能直接使用 内部类的成员 和方法; • 2、 如果外部 类和内部类具 有相同的成员 变量或方法, 内部类默认访 问自己的成员 变量或方法, 如果要访问外 部类的成员变 量,可以使用 this 关键字