• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

从零开始学习JAVA | 第十九篇初识内部类

武飞扬头像
我是一盘牛肉
帮助1

学新通

前言:

内部类是类的五大成员。一个类的其他的成员分别是属性,方法,构造方法,代码块。本文将详细介绍什么是内部类,以及内部类的意义。

内部类:

内部类(Inner Class)是 Java 中的一个特殊概念,它指的是一个类定义在另一个类内部的类。内部类可以访问外部类的成员,包括私有的成员和方法。内部类还可以访问同一个外部类中其他内部类的成员。内部类是 Java 实现面向对象的一个重要机制,常用于事件驱动编程中。

Java 中内部类的分类有以下几种:

1. 成员内部类:定义在外部类中,但是在外部类的成员方法之外。
2. 静态内部类:定义在外部类中,但是在外部类的静态方法中或者外部类的静态区域中。
3. 局部内部类:定义在外部类的方法体中或者一个作用域内。

下面是一个成员内部类的示例:

  1.  
     
  2.  
    public class Outer {
  3.  
        private int num = 1;
  4.  
        private String name = "Outer";
  5.  
        public class Inner {
  6.  
            public void print() {
  7.  
                System.out.println("num is " num ", name is " name);
  8.  
            }
  9.  
        }
  10.  
    }

在以上代码中,定义了外部类 `Outer` 和成员内部类 `Inner`,`Inner` 类可以访问 `Outer` 类中的私有成员 `num` 和 `name`。

下面是一个示例程序,演示如何创建和使用成员内部类:

  1.  
    public class Test {
  2.  
        public static void main(String[] args) {
  3.  
            Outer outer = new Outer();
  4.  
            Outer.Inner inner = outer.new Inner();
  5.  
            inner.print();
  6.  
        }
  7.  
    }

在以上示例中,首先创建了外部类 `Outer` 的实例 `outer`,然后使用实例 `outer` 创建了内部类 `Inner` 的实例 `inner`,最后调用 `inner` 的方法 `print()` 输出结果。

总之,内部类是 Java 实现面向对象编程的重要机制,可以访问外部类的成员和方法,是实现一些事件驱动或者复杂逻辑的必要手段之一。

内部类的分类:

1.成员内部类:

成员内部类是和外部类的成员变量和方法平级的,可以访问外部类的所有变量和方法,它的定义方式如下:

  1.  
    public class Outer {
  2.  
        private int data;
  3.  
        public void method() {
  4.  
            Inner inner = new Inner();
  5.  
            inner.print();
  6.  
        }
  7.  
        class Inner {
  8.  
            public void print() {
  9.  
                System.out.println(data);
  10.  
            }
  11.  
        }
  12.  
    }

上面的代码定义了一个 Outer 类和一个 Inner(Nested) 类,在 Outer 类中定义了一个成员内部类 Inner,它可以访问 Outer 类中的 data 变量。

使用成员内部类的方式如下:

  1.  
    Outer outer = new Outer();
  2.  
    outer.method(); // 输出 "0"

2. 静态内部类

静态内部类是在外部类内部定义的一个静态类,它独立于外部类的对象,也就是说,即使没有创建外部类的对象,我们仍然可以使用静态内部类,静态内部类的定义方式如下:

  1.  
    public class Outer {
  2.  
        private static int data;
  3.  
        public static class Inner {
  4.  
            public void print() {
  5.  
                System.out.println(data);
  6.  
            }
  7.  
        }
  8.  
    }

使用静态内部类的方式如下:

  1.  
    Outer.Inner inner = new Outer.Inner();
  2.  
    inner.print(); // 输出 "0"

这里需要注意,静态内部类中只能访问外部类的静态变量或静态方法。

3. 局部内部类

局部内部类是定义在方法内部的内部类,只能在该方法内部使用,它的定义方式如下:

  1.  
     
  2.  
    public class Outer {
  3.  
        private int data;
  4.  
        public void method() {
  5.  
            class Inner {
  6.  
                public void print() {
  7.  
                    System.out.println(data);
  8.  
                }
  9.  
            }
  10.  
            Inner inner = new Inner();
  11.  
            inner.print();
  12.  
        }
  13.  
    }

上面的代码定义了一个局部内部类 Inner,它可以访问外部类中的 data 变量。

使用局部内部类的方式如下:

  1.  
     
  2.  
    Outer outer = new Outer();
  3.  
    outer.method(); // 输出 "0"

4. 匿名内部类

匿名内部类是没有名字的内部类,只能一次性使用,它通常用于实现接口和抽象类的方法,它的定义方式如下:

  1.  
     
  2.  
    public interface MyInterface {
  3.  
        void method();
  4.  
    }
  5.  
     
  6.  
    public class MyClass {
  7.  
        public void print() {
  8.  
            MyInterface myInterface = new MyInterface() {
  9.  
                public void method() {
  10.  
                    System.out.println("Hello World");
  11.  
                }
  12.  
            };
  13.  
            myInterface.method();
  14.  
        }
  15.  
    }
学新通

上面的代码中,MyInterface 是一个接口,MyClass 中 print() 方法中使用了匿名内部类实现了 MyInterface 的 method() 方法。

使用匿名内部类的方式如下:

  1.  
    MyClass myClass = new MyClass();
  2.  
    myClass.print(); // 输出 "Hello World"

以上是几种常见的内部类的定义和使用方式,内部类的使用非常灵活,可以通过内部类实现许多功能,并且它具有访问外部类私有成员的能力,但是由于内部类的存在,代码的可读性和可维护性会相应降低,因此应该谨慎使用。

总结:

内部类的出现进一步扩展了类的功能,使得类的功能更加丰富,内部类的种类繁多,但我们对于这一块只要求掌握就可以了,不必做过深的研究。

如果我的内容对你有帮助,请点赞,评论,收藏创作不易,大家的支持就是我坚持下去的动力!

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbjebe
系列文章
更多 icon
同类精品
更多 icon
继续加载