Java SE --- 内部类

x33g5p2x  于2022-03-10 转载在 Java  
字(1.4k)|赞(0)|评价(0)|浏览(457)

内部类

1. 内部类的概述

内部类指的是****把类定义在另一个类的内部,该类就被称为内部类。类名不需要和源文件名相同

内部类的种类:
在Java中,内部类的使用共有两种情况:

(1). 在类中定义一个类(成员内部类,静态内部类);
(2). 在方法中定义一个类(局部内部类,匿名内部类)。

2. 局部内部类

局部内部类(本地内部类) : 定义在方法当中的类.
只能在当前方法中使用,出了方法就没办法使用.

  1. public class TestDemo {
  2. public void func() {
  3. class In{
  4. private int a;
  5. public String str;
  6. }
  7. //局部内部类 缺点 :只能在当前方法中使用
  8. }
  9. }

3. 成员内部类

成员内部类也叫实例内部类,可以把他当作是外部类的一个普通实例的成员.

  1. class OuterClass {
  2. public int data1 = 1;
  3. private int data2 = 2;
  4. public static int data3 = 3;
  5. // 实例内部类
  6. class InnerClass{
  7. public int data4 = 4;
  8. private int data5 = 5;
  9. public static final int data6 = 6;
  10. public InnerClass() {
  11. System.out.println("不带参数的内部类的构造方法");
  12. }
  13. public void test() {
  14. System.out.println("InnerClass::test()");
  15. }
  16. }
  17. public void func(){
  18. System.out.println("OuterClass::func1()");
  19. }
  20. }

注意事项:

1. 在实例内部类中 不能定义一个静态的成员变量

**如果非要定义,只能定义 1 个,静态常量.(static final)


**

2. 如何实例化,成员内部类的对象

外部类名.内部类名 变量 = 外部类对象的引用.new 内部类();

3. 成员内部类当中,如果包含了和外部类同名的成员变量,那么如何在成员内部类当中访问

4. 如何继承内部类(了解即可)

5. 当一个类有内部类的时候的字节码文件(了解即可)

OuterClass$InnerClass

外部类$内部类.class

4. 静态内部类

  1. class OuterClass {
  2. public int data1 = 1;
  3. private int data2 = 2;
  4. public static int data3 = 3;
  5. // 静态内部类
  6. static class Innerclass{
  7. public int data4 = 5;
  8. private int data5 = 5;
  9. private static int data6 = 6;
  10. public void test(){
  11. System.out.println("InnerClass::test()");
  12. }
  13. }
  14. }

注意事项:

1. 如何实例化 静态内部类的对象

外部类名.内部类名 变量 = new 外部类名.内部类名();

2. 静态内部类当中,如何访问外部类的成员变量

5.匿名内部类

  1. class Out{
  2. public void test(){
  3. System.out.println("hello!");
  4. }
  5. }
  6. public class Test {
  7. public static void main(String[] args) {
  8. new Out(){
  9. };
  10. }
  11. }

匿名内部类调用test()方法.

匿名内部类调用重写的test()方法

相关文章