Java基础 - 内部类04 - 成员内部类

1.什么是成员内部类

定义 : 在成员的位置上定义的一个类,且没有static修饰的;

2.成员内部类的特性(关键)

 *        1.可以直接访问外部类的所有成员,包含私有的;
 *        2.可以添加任意的修饰符,public、private、默认、protected,
 *           因为成员内部类的地位就是外部类的一个成员;
 *        3.作用域 : 与外部类的其他成员一致,是整个的类体;
 *        4.成员内部类 访问 外部类 的属性/方法 : 直接访问即可;
 *        5.外部类 访问 成员内部类 : 通过创建对象再访问的方式;
 *        6.外部其他类 访问 成员内部类 :
 *           方式一 : 通过外部类的对象获取成员内部类对象;
 *           方式二 : 通过外部类的方法,获取一个成员内部类的对象。
 *        7.外部类 和 成员内部类的 成员重名时,内部类中访问重名的成员,默认遵循就近原则,
 *          如果 成员内部类 就是想访问 外部类的重名成员,则使用语法 : 【外部类名.this.成员名称】
 *

3.案例代码

3.1 成员内部类的定义代码

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

package com.northcastle.C_chengyuan_innerClass;

/**
 * author : northcastle
 * createTime:2022/2/10
 */
public class ChengyuanInnerClass {

    //4.一个成员内部类
    public class innerClass{
        //4.1 成员内部类的属性
        private String field01 = "成员内部类的私有属性 field01";
        public String field0202 = "成员内部类的共有属性 field0202";
        //4.2 成员内部类的构造器
        public innerClass() {
        }
        public innerClass(String field01, String field0202) {
            this.field01 = field01;
            this.field0202 = field0202;
        }
        //4.3 成员内部类的方法
        public void innerMethod01(){
            System.out.println("成员内部类的方法01 : innerMethod01");
        }

        public void innerMethod02(){
            System.out.println("成员内部类的方法02 : innerMethod02,此方法演示调用外部类的成员");
            System.out.println("外部类的属性 field01 : "+ChengyuanInnerClass.this.field01);
            System.out.println("外部类的属性 field02 : "+field02);
            System.out.println("成员内部类调用外部类的方法 method01 : ");
            method01(); // 直接调用外部类的方法
        }

    }

    //1.外部类的属性
    private String field01 = "外部类的私有属性field01";
    public String field02 = "外部类的共有属性field02";
    //2.外部类的构造器
    public ChengyuanInnerClass() {
    }
    public ChengyuanInnerClass(String field01, String field02) {
        this.field01 = field01;
        this.field02 = field02;
    }
    //3.外部类的方法
    //3.1 一个普通的方法
    public void method01(){
        System.out.println("外部类的方法01 : method01");
    }
    //3.2 外部类访问成员内部类的方法
    public void method02(){
        System.out.println("外部类的方法02 : method02,此方法演示使用成员内部类");
        //通过创建对象的方式来调用
        innerClass innerClass = new innerClass();
        System.out.println("成员内部类的属性field01 : "+innerClass.field01);
        System.out.println("成员内部类的属性field0202 : "+innerClass.field0202);
        innerClass.innerMethod01();
    }

    //4.外部类定义的一个方法,来返回一个成员内部类的对象,供外部其他类使用
    public innerClass getInnerClassInstance(){
        return new innerClass();
    }


}


3.2 成员内部类的使用代码

package com.northcastle.C_chengyuan_innerClass;

/**
 * author : northcastle
 * createTime:2022/2/10
 */
public class Application {
    public static void main(String[] args) {
        //1.演示外部类使用成员内部类
        ChengyuanInnerClass chengyuanInnerClass = new ChengyuanInnerClass();
        chengyuanInnerClass.method02();
        System.out.println("==================================");

        //2.演示外部其他类获取 成员内部类的两种方式
        //2.1 方式一 : 通过外部类的对象获取一个成员内部类的对象
        ChengyuanInnerClass.innerClass innerClass01 = new ChengyuanInnerClass().new innerClass();
        //2.2 方式二 : 通过外部类的方法获取一个成员内部类的对象
        ChengyuanInnerClass chengyuanInnerClass2 = new ChengyuanInnerClass();
        ChengyuanInnerClass.innerClass innerClass02 = chengyuanInnerClass2.getInnerClassInstance();
        System.out.println("==================================");

        //3.演示成员内部类使用外部类的属性:直接使用上面的成员内部类对象
        innerClass01.innerMethod02();
        System.out.println("==================================");
    }
}

3.3 运行结果

在这里插入图片描述

4.完成

Congratulations!
You are one step closer to success!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值