四种内部类(局部内部类)

本文探讨了Java内部类的特性,包括局部内部类的定义位置、与外部类的权限关系、作用域限制、实例化方式,以及如何利用它们增强类的设计。重点介绍了局部内部类的私有属性访问、访问修饰符的应用和重名成员的处理。
摘要由CSDN通过智能技术生成

内部类(inter class)

内部为顾名思义,是一个定义在一个类的内部的类,它们的方法可以访问包含它们的外部类的字段,内部类在设计具有相互协作关系的类集合时很有用。

1.局部内部类定义的位置

首先它是一个内部类,我们可以知道他肯定要定义在一个类的内部,而根据它一些具体的特征我们可以定义一个局部内部类

一些属性及其特征

1,比如定义在外部类的方法中 并且有类名

class Outer02{//外部类
    public void m1(){//一个外部类的方法
        //在里面定义一个内部类
        class inter {//这就是一个局部内部类
        }
    }
}

2.可以直接访问外部类的私有属性

虽然是一个内部类但是本质上还是一个类,类所具有的属性他全可以具有

 如上图外部类的私有成员可以正常调用

3.不能添加访问修饰符,因为它本身就是一个局部变量,局部变量不能使用修饰符,但可以使用final修饰

 如上图所示

不加final修饰可以被其他内部类继承,但是加了final修饰之后则不能被继承

 4.作用域

作用域仅仅在所定义的代码块或者方法中

5.若局部内部类想要调用外部类的成员可以直接调用,而外部类要调用内部类的成员则要先创建对象(new一个)然后调用即可

public class LocalInterClass{
    public static void main(String[] args) {
        Outer02 outer02 = new Outer02();
        outer02.m1();
    }
}

class Outer02{//外部类
    //外部类中的私有方法都是可以在内部类中直接调用的
    private int n = 1;
    private void n1(){
        System.out.println("这里是n1");
    }

    public void m1(){
        class inter {//这就是一个局部内部类
            public void info(){
                //都是可以直接调用
                System.out.println(n);
                n1();
            }
        }
        inter inter = new inter();
        inter.info();
    }
}

6.内部类不能被其他类使用

7.如果外部

package com.interClass;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

public class LocalInterClass{
    public static void main(String[] args) {
        Outer02 outer02 = new Outer02();
        outer02.m1();
    }
}

class Outer02{//外部类
    //外部类中的私有方法都是可以在内部类中直接调用的
    private static int n = 1;

    private void n1(){
        System.out.println("这里是n1");
    }

    public void m1(){
        class inter {//这就是一个局部内部类
            int n = 2;
            public void putout(){
                System.out.println("这个是内部类的n="+n);
                System.out.println("这个是外部类的n="+Outer02.this.n);//非静态可以这样通过this来调用
                System.out.println("这个是外部类的n="+Outer02.n);
            }
            public void info(){
                //都是可以直接调用
                System.out.println(n);
                n1();
            }
        }
        inter inter = new inter();
        inter.putout();
    }
}

类和内部类有重名的成员则遵循就进原则,如果想访问具体的属性可通过this来实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凑凑洗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值