从零开始学习JAVA | 第十九篇初识内部类
前言:
内部类是类的五大成员。一个类的其他的成员分别是属性,方法,构造方法,代码块。本文将详细介绍什么是内部类,以及内部类的意义。
内部类:
内部类(Inner Class)是 Java 中的一个特殊概念,它指的是一个类定义在另一个类内部的类。内部类可以访问外部类的成员,包括私有的成员和方法。内部类还可以访问同一个外部类中其他内部类的成员。内部类是 Java 实现面向对象的一个重要机制,常用于事件驱动编程中。
Java 中内部类的分类有以下几种:
1. 成员内部类:定义在外部类中,但是在外部类的成员方法之外。
2. 静态内部类:定义在外部类中,但是在外部类的静态方法中或者外部类的静态区域中。
3. 局部内部类:定义在外部类的方法体中或者一个作用域内。
下面是一个成员内部类的示例:
-
-
public class Outer {
-
private int num = 1;
-
private String name = "Outer";
-
public class Inner {
-
public void print() {
-
System.out.println("num is " num ", name is " name);
-
}
-
}
-
}
在以上代码中,定义了外部类 `Outer` 和成员内部类 `Inner`,`Inner` 类可以访问 `Outer` 类中的私有成员 `num` 和 `name`。
下面是一个示例程序,演示如何创建和使用成员内部类:
-
public class Test {
-
public static void main(String[] args) {
-
Outer outer = new Outer();
-
Outer.Inner inner = outer.new Inner();
-
inner.print();
-
}
-
}
在以上示例中,首先创建了外部类 `Outer` 的实例 `outer`,然后使用实例 `outer` 创建了内部类 `Inner` 的实例 `inner`,最后调用 `inner` 的方法 `print()` 输出结果。
总之,内部类是 Java 实现面向对象编程的重要机制,可以访问外部类的成员和方法,是实现一些事件驱动或者复杂逻辑的必要手段之一。
内部类的分类:
1.成员内部类:
成员内部类是和外部类的成员变量和方法平级的,可以访问外部类的所有变量和方法,它的定义方式如下:
-
public class Outer {
-
private int data;
-
public void method() {
-
Inner inner = new Inner();
-
inner.print();
-
}
-
class Inner {
-
public void print() {
-
System.out.println(data);
-
}
-
}
-
}
上面的代码定义了一个 Outer 类和一个 Inner(Nested) 类,在 Outer 类中定义了一个成员内部类 Inner,它可以访问 Outer 类中的 data 变量。
使用成员内部类的方式如下:
-
Outer outer = new Outer();
-
outer.method(); // 输出 "0"
2. 静态内部类
静态内部类是在外部类内部定义的一个静态类,它独立于外部类的对象,也就是说,即使没有创建外部类的对象,我们仍然可以使用静态内部类,静态内部类的定义方式如下:
-
public class Outer {
-
private static int data;
-
public static class Inner {
-
public void print() {
-
System.out.println(data);
-
}
-
}
-
}
使用静态内部类的方式如下:
-
Outer.Inner inner = new Outer.Inner();
-
inner.print(); // 输出 "0"
这里需要注意,静态内部类中只能访问外部类的静态变量或静态方法。
3. 局部内部类
局部内部类是定义在方法内部的内部类,只能在该方法内部使用,它的定义方式如下:
-
-
public class Outer {
-
private int data;
-
public void method() {
-
class Inner {
-
public void print() {
-
System.out.println(data);
-
}
-
}
-
Inner inner = new Inner();
-
inner.print();
-
}
-
}
上面的代码定义了一个局部内部类 Inner,它可以访问外部类中的 data 变量。
使用局部内部类的方式如下:
-
-
Outer outer = new Outer();
-
outer.method(); // 输出 "0"
4. 匿名内部类
匿名内部类是没有名字的内部类,只能一次性使用,它通常用于实现接口和抽象类的方法,它的定义方式如下:
-
-
public interface MyInterface {
-
void method();
-
}
-
-
public class MyClass {
-
public void print() {
-
MyInterface myInterface = new MyInterface() {
-
public void method() {
-
System.out.println("Hello World");
-
}
-
};
-
myInterface.method();
-
}
-
}
上面的代码中,MyInterface 是一个接口,MyClass 中 print() 方法中使用了匿名内部类实现了 MyInterface 的 method() 方法。
使用匿名内部类的方式如下:
-
MyClass myClass = new MyClass();
-
myClass.print(); // 输出 "Hello World"
以上是几种常见的内部类的定义和使用方式,内部类的使用非常灵活,可以通过内部类实现许多功能,并且它具有访问外部类私有成员的能力,但是由于内部类的存在,代码的可读性和可维护性会相应降低,因此应该谨慎使用。
总结:
内部类的出现进一步扩展了类的功能,使得类的功能更加丰富,内部类的种类繁多,但我们对于这一块只要求掌握就可以了,不必做过深的研究。
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbjebe
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13