java中的内部类

本文详细介绍了Java中的内部类,包括成员内部类、静态内部类、局部内部类和匿名内部类,阐述了它们的访问特性和使用场景。通过示例代码展示了如何创建和使用内部类,解释了内部类在封装、实现多继承以及解决特定问题上的作用。同时,文章还探讨了内部类在实际开发中的应用,如在事件监听、多线程等方面的角色。
摘要由CSDN通过智能技术生成

内部类

什么是内部类?

内部类是类中的成员,是一个在类中定义的类,称为内部类

例如:如果在类 Outer 的内部再定义一个类 Inner,此时类 Inner 就称为内部类 (或称为嵌套类),而类 Outer 则称为外部类(或称为宿主类)。

内部类的分类

成员内部类

成员内部类——就是位于外部类成员位置的类 特点:可以使用外部类中所有的成员变量和成员方法(包括private的),并且可以用任意权限修饰符进行修饰

public class Outer {
    int num=10;
    static int num1=10;
​
​
    //成员内部类,可以用权限修饰符修饰
    private class Inner{
​
        public void print(){
            System.out.println(num);//成员内部类中可以调用外部类的成员
        }
​
    }
    //利用get方法获取成员的内部类
    public Inner getInner(){
        return new Inner();
    }
​
    public static void main(String[] args) {
        Outer outer=new Outer();
        Outer.Inner inner=outer.getInner();//无法直接访问Inner类,故使用内部类类型的对象引用去指向内部类对象
        inner.print();
    }
}

静态内部类

这种被 static 所修饰的内部类,按位置分属于成员内部类,但也可以称作静态内部类,也常叫做嵌套内部类.不能使用外部类的非static成员变量和成员方法

public class Outer {
    static int num1=10;
​
    //静态内部类
    static class Inner2{
        public void print(){
            System.out.println(num1);//静态内部类中只允许访问静态成员
        }
    }
​
​
    public static void main(String[] args) {
        new Outer.Inner2().print();
    }
}

局部内部类

局部内部类——就是定义在一个方法或者一个作用域里面的类 特点:主要是作用域发生了变化,只能在自身所在方法和属性中被使用

class Outer {
      private int age = 20;
      public void method() {
          final int age2 = 30;
          class Inner {
              public void show() {
                  System.out.println(age);
                  //从内部类中访问方法内变量age2,需要将变量声明为最终类型。
                  System.out.println(age2);
              }
          }
                    Inner i = new Inner();

匿名内部类

即没有定义名称的内部类,是内部类的简化写法

在Arrays类中的sort方法以及ArrayList类中sort方法,还有添加监听器,都可以使用匿名内部类实现

JButton jb=new JButton("登录");
​
        //匿名内部类,成员内部类的简化形式,不用去直接去创建内部类,如果只是临时的需要内部类对象可以使用这种方式
        jb.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("鼠标点击");
            }
        });

内部类的特点

内部类是类中的一个成员可以访问类中的成员无论是私有还是公共的

静态内部类只能访问类中静态成员

内部类也是一个类文件,在编译的时候也会产生一个.java文件,但是文件名是由外部类类名+$+内部类类名构成的

内部类的意义

内部类的意义

1.封装型

内部类无法在其他类中直接被调用,只能在外部类中自己内部调用,我们可以对内部类的访问权限做出限制来对外界隐藏一些操作与方法

2.实现多继承

java中的继承机制是单继承,这样做既有好处也有坏处,好处是可以避免多继承中的钻石继承结构问题,坏处是继承是单一的有些特殊情况难以实现,而内部类可以在类的内部去继承其他类,达到多继承的目的

 

多继承问题的实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值