栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础 - 内部类02 - 局部内部类详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础 - 内部类02 - 局部内部类详解

1.什么是局部内部类

定义 : 局部内部类是定义在外部类的局部位置,且一定要有类名;
局部内部类的本质仍然是一个类。

2.局部内部类的特性(关键)
 *      1. 可以直接访问 外部类 的所有成员,包括 私有的;
 *      2. 局部内部类 的地位相当于一个局部变量,因此不能添加访问修饰符,
 *         但可以使用final进行修饰;
 *      3. 作用域 : 仅仅在定义它的方法或代码块中有效;
 *      4. 局部内部类 访问 外部类的成员 : 直接访问即可;
 *      5. 外部类 访问 局部内部类的成员 : 创建对象 -> 通过对象进行访问,
 *         注意 : 需要在局部内部类的作用域中才可以;
 *      6. 如果 外部类 和 局部内部类 的成员重名时,默认遵循就近原则,
 *         如果就是想访问 外部类的成员时,使用 【外部类名.this.成员】 的方式
3.案例代码 3.1 局部内部类的定义代码

各位coder一定要跟着上面的特性来看这一段代码。

package com.northcastle.A_jubu_innerClass;

public class JubuInnerClass {

    // 1.外部类的属性
    private String field01 = "外部类的私有属性field01";
    public String field02 = "外部类的共有属性field02";

    // 2.外部类的构造器
    public JubuInnerClass() {
    }

    public JubuInnerClass(String field01, String field02) {
        this.field01 = field01;
        this.field02 = field02;
    }

    // 3.外部类的方法
    public void method01(){
        System.out.println("== 外部类的共有方法 : method01 ");
    }
    private void method02(){
        System.out.println("== 外部类的私有方法 : method02 ");
    }

    // * 包含内部类的方法
    public void method03(){

        System.out.println("== 外部类的方法03 begin : 此方法包含一个局部内部类 == ");
        System.out.println();

        // 下面开始编写 局部内部类的代码
        class innerClass{
            // 1.局部内部类 的 属性
            private String field01_inner = "局部内部类的私有属性";
            public String field02_inner = "局部内部类的共有属性";
            private String field02 = "局部内部类的和外部类重名的属性";

            // 2.局部内部类的 构造器
            public innerClass() {
            }
            public innerClass(String field01_inner, String field02_inner, String field02) {
                this.field01_inner = field01_inner;
                this.field02_inner = field02_inner;
                this.field02 = field02;
            }

            //3.局部内部类的方法
            public void method01_inner(){
                System.out.println("--> 这是局部内部类的方法 method01_inner : begin <--");

                System.out.println("直接访问外部类的私有成员 field01 : "+field01);

                System.out.println("直接访问外部类的方法method01()、method02 :");
                method01();
                method02();

                System.out.println("--> 这是局部内部类的方法 method01_inner : end <--");
            }

            public void method02_inner(){
                System.out.println("--> 这是局部内部类的方法 method02_inner 演示内部类如何访问同名的外部类的属性field02  begin <--");
                System.out.println("外部类的属性 field02 : "+JubuInnerClass.this.field02);
                System.out.println("--> 这是局部内部类的方法 method02_inner 演示内部类如何访问同名的外部类的属性field02  end <--");
            }
        } // innerClass end

        // 外部类访问内部类 : 创建内部类的对象,通过对象进行访问
        innerClass innerClass = new innerClass();
        innerClass.method01_inner();
        System.out.println();
        innerClass.method02_inner();

        System.out.println();
        System.out.println("== 外部类的方法03 end : 此方法包含一个局部内部类 == ");

    }
}

3.2 局部内部类的使用代码
package com.northcastle.A_jubu_innerClass;

public class Application {
    public static void main(String[] args) {
        //本代码演示使用内部类的情况
        JubuInnerClass jubuInnerClass = new JubuInnerClass();
        jubuInnerClass.method03();
    }
}
3.3 运行结果

4.完成

Congratulations!
You are one step closer to success!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/726378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号