内部类

    科技2023-09-30  70

    基本定义

    在类内部定义的类就是内部类 内部类可声明为public或private,对其访问的成员变量和成员方法完全相同;

    class Outer{//定义外部类 private String info="hello world";//定义外部类的私有属性 class Inner{//内部类 public void print(){ System.out.println(info); } } public void fun(){ new Inner().print(); } } public class InnerClassDemo01 { public static void main(String[] args) { new Outer().fun();//调用外部类的fun方法 } }

    内部类的唯一好处就是可以方便的访问外部类中的私有属性;

    使用static定义内部类

    用static声明的内部类变成了外部类,但是用static声明的内部类不能访问非static的外部类属性。

    class Outer{//定义外部类 private String info="hello world";//定义外部类的私有属性 static class Inner{//内部类 public void print(){ System.out.println(info); } } } public class InnerClassDemo01 { public static void main(String[] args) { new Inner().print(); } }

    在外部访问内部类

    格式: 外部类.内部类 内部类对象=外部类实例.new 内部类(); 内部类定义后,生成的class文件是以Outer$Inner.class的形式存在,在java中只要在文件中存在 $,则在程序中应将其代替为"."。

    class outer{ private String info="hello world";//定义外部类的私有属性 class Inner{//内部类 public void print(){ System.out.println(info); } } } public class InnerClassDemo2 { public static void main(String[] args) { Outer outer=new Outer();//实例化外部对象 Outer.Inner inner=outer.new Inner();//实例化内部对象 inner.print();//调用内部方法 } }

    在方法中定义内部类

    在方法中定义的内部类不能直接访问方法中的参数,如果方法中的参数想要被内部类访问,则参数前必须加上final关键字。

    class Outer2{ private String info="hello world";//定义外部类的私有属性 public void fun(final int temp){//参数要被访问必须用final声明 class Inner{//方法中定义内部类 public void print(){ System.out.println("类中的属性:"+info); System.out.println("方法中的参数:"+temp); } } new Inner().print(); } } public class InnerClassDemo3 { public static void main(String[] args) { new Outer2().fun(30); } }
    Processed: 0.010, SQL: 8