Java中的成员内部类

  Java中的成员内部类(也称为非静态内部类)是定义在另一个类(外部类)内部的类。

这种内部类与它的外部类之间有着紧密的联系,主要体现在几个方面:它可以访问外部类的所有成员(包括私有成员),并且它的实例自动持有外部类实例的引用。下面详细讲解Java中的成员内部类:

1. 定义成员内部类

成员内部类定义在外部类的任何方法之外,通常作为外部类的一个成员存在。它不能包含静态成员(除了静态常量),因为成员内部类实例总是依赖于外部类实例。

public class Outer {
    private int age=18;
    public static String a;
    //成员内部类
    public class Inner{
        public String name;
        private int age=28;

        public void test(){
            System.out.println(age);
            System.out.println(a);

            int age=38;

            System.out.println(age);//38
            System.out.println(this.age);//28
            System.out.println(Outer.this.age);//18
        }
    }
}

 

2. 访问外部类成员

1.成员内部类可以直接访问外部类的所有成员(包括私有成员),而无需任何特殊语法。

2.可以在成员内部类的实例方法中,拿到当前外部类对象,格式:外部类名.this

3. 创建成员内部类实例

  要创建成员内部类的实例,你需要先创建外部类的实例,然后通过外部类实例来创建内部类实例。这是因为成员内部类的实例总是与外部类的一个实例相关联。

public class test1 {
    public static void main(String[] args) {
        Outer.Inner in=new Demo1().new Inner();
        in.test();
    }
}

 

4. 成员内部类的用途

  • 封装:成员内部类提供了一种将逻辑紧密相关的类组织在一起的方式,从而增强了代码的封装性。
  • 回调:成员内部类可以作为回调接口的实现,这样可以避免在外部类中创建大量仅用于回调的匿名内部类。
  • 访问控制:通过内部类,可以隐藏一些实现细节,同时允许在包级别或类级别控制访问。

5. 注意事项

  • 成员内部类不能声明为static,因为静态成员属于类本身,而非类的实例。如果需要静态内部类,应使用静态内部类(也称为嵌套类)。
  • 成员内部类实例的创建总是依赖于外部类实例,因此它们之间的生命周期也是紧密相关的。
  • 成员内部类可以访问外部类的this引用,但不能直接访问外部类的静态成员(除非通过外部类名访问)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值