Java 内部类学习(转载)

博客介绍了成员内部类,它可看作外部类的成员,一般无法声明静态成员,static final字段除外。因为加载类时先初始化静态成员,若内部类有静态成员可能先于外部类生成,脱离掌控。实例化时,内部类持有外部类当前对象引用,可访问外部类成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 成员内部类

              成员内部类可以看成是外部类的一个成员,在成员内部类中无法声明静态成员,但static

    final字段是个例外。我们知道加载类时,会先初始化静态成员,如果成员内部类有静态成

    员,那么内部类就会在外部类之前生成,而内部类是为外部类服务的,内部类在外部类之

    前就生成可能会脱离掌控。在实例化成员内部类时,成员内部类会持有一个外部类当前对

    象的引用,这样在成员内部类中就可以直接访问外部类的成员,即使是private修饰的。

package com.zte.InnerClass;

import static java.lang.System.out;

public class InnerClassTest {
    private String outerName = "outer";//外部类无法直接访问内部类的成员,需要实例化内部类对象

    private Inner inner = new Inner();


    public class Inner {

        private String innerName = "inner";

        public void show() {
            out.println(outerName); //可以直接访问外部类的成员
        }

    }

    public void show() {
        out.println(inner.innerName);
        inner.show();
    }

    public static void main(String[] args) {
        InnerClassTest outer = new InnerClassTest();
        outer.show();
        //实例化内部类
        InnerClassTest.Inner inner = outer.new Inner();
        inner.show();
    }
}



console输出结果:
    inner
    outer    
    outer

Debug分析如下,当重新实例化内部类时

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值