JAVA内部类

/**嵌套:一个类嵌套着另一个类
 * 变量和方法以外我们还可以在类中定义一个类
 * 这个类就是内部类
 */
public class Outer {
    int a=1;
    public void a(){
        System.out.println("外部类a方法");
    }
    class Inner{
        int b=1;
        public void b(){
            System.out.println("内部类b方法");
        }

    }

}
-------------------------------------------------------------
  • 创建内部类的对象:

  1. 没有父类就没有没有子类,内部类与外部类也一样,要想创建内部类的对象那么就必须将外部类的对象创建出来,再由外部类的对象创建出内部类的对象

  2. 创建内部类对象的两种写法:

public class Test {
public static void main(String[] args){


//创建内部类对象的第一种写法
Outer.Inner inner=new Outer().new Inner();
//创建内部类的第二种写法:先创建外部类对象,然后由外部类的对象去创建内部类的对象
Outer outer=new Outer();//创建了外部对象
Outer.Inner inner1=outer.new Inner();//创建内部的对象

}
  • 关于this和内部类外部类变量的引用
public class Outer {
    /**
     * 嵌套:一个类嵌套着另一个类
     * 变量和方法以外我们还可以在类中定义一个类
     * 这个类就是内部类
     */
//    加上权限修饰符private时,内部类也可以使用
    private int a = 1;


    public void a() {
        int a=6;
        System.out.println("外部类a方法\n"+"外部类的a="+this.a+"\n方法a()a中的a=" +a);
        System.out.println("--------------------------------------------------------------------");
    }

    class Inner {
        int a = 3;
        public void b() {
            int a=4;
//            不加任何描述的时候根据就近原则调用离他最近的变量
            System.out.println("内部类中方法b中的值--就近原则直接调用="+a);
//            this. 表示调用到该Inner类中的a
            System.out.println("本类中的a---用this.调用="+this.a);
//            Outer.this.a 用来调用外部类Outer中的a
            System.out.println("外部类的a----Outer.this.a="+Outer.this.a);

        }
    }

}
 
原文地址:https://www.cnblogs.com/zhaiyaohua/p/5799790.html