JAVA局部内部类

局部内部类和局部变量一样,是指在方法中定义的内部类。它是一个只有在局部有效的内部类,所以只能在其有效的范围的位置访问或创建其对象。

 package JAVA_Project_01_05;

//局部内部类和局部变量一样,是指在方法中定义的内部类。它是一个只有在局部有效的内部类,所以只能在其有效的范围的位置访问或创建其对象。

//使用局部内部类的技术要点如下:
//
//· 局部内部类的语法格式:
//
//class外部类名{
//
//(访问修饰符)返回类型方法名(参数){
//
//class局部内部类名{}}}
//
//· 局部内部类可以访问外部类的私有实例变量和局部常量。与局部变量类似,在局部内部类前不加修饰符public和private,其范围为定义它的代码块。
//
//· 在外部类的外部不能直接访问局部内部类,这样就有效地保证了局部内部类对外是不可见的。为了能够用外部类访问到局部内部类,可以通过局部内部类和接口达到一个强制的弱耦合关系,用局部内部类来实现接口,并在方法中返回接口类型,这样便可一方面屏蔽类的可见性;另一方面在类的外部访问到局部内部类。

interface LocalInterface {//定义一个接口

    public void local_1();//定义三个方法

    public void local_2();

    public void local_3();

}

class Outer {//外部类

    private int a1 = 10;

    private void privateShow() {

        System.out.println("外部类的私有非静态变量");

    }

    public void show() {

        System.out.println("外部类的非静态方法");

    }

    public LocalInterface method() {//方法返回局部内部类实现的接口

        final int number = 20;

        class Inner implements LocalInterface {//定义局部内部类实现接口

            public void local_1() {

                show();

            }

            public void local_2() {

                System.out.println("显示局部内部类的成员常量:" + number);

                System.out.println("调用外部类的成员变量:" + a1);

            }

            public void local_3() {

                privateShow();

            }

        }

        return new Inner();

    }

}

public class TextLocalInnerClass {//操作局部内部类的类

    public static void main(String[] args) {//Java程序主入口处

        Outer out = new Outer();//实例化对象

        LocalInterface local = out.method();//调用方法返回接口

        local.local_1();//调用接口的方法

        local.local_2();

        local.local_3();

    }

}

/*
(1)程序中定义接口、外部类以及外部类的方法和属性。其中在method()方法中创建局部内部类Inner来实现接口中的方法并返回接口类型,
这样才能访问到局部内部类的方法。其中local_1()方法中调用外部类的非静态方法,local_2()方法中显示局部内部类的成员常量和调用外部类的成员变量。
local_3()方法中调用外部类的私有的非静态方法。
(2)需要注意的是:在局部内部类中声明局部常量必须是final型的,不是final型的是无法访问的。
 */
发布了70 篇原创文章 · 获赞 10 · 访问量 3178

猜你喜欢

转载自blog.csdn.net/JN_Cat/article/details/103995257