成员内部类 | 静态内部类 | 局部内部类 | 匿名内部类

简介: 这篇文章详细介绍了Java中的四种内部类:成员内部类、静态内部类、局部内部类和匿名内部类,包括它们的使用场景、特点和示例代码。

成员内部类 | 静态内部类 | 局部内部类 | 匿名内部类

1、成员内部类

  • 可以访问外部类的所有资源、本身内部不能有静态属性(本身就需要外部类的实例化)
  • 通过类.this.变量名。调用外部类相同的方法或者属性
 ExternalClass.this.a
AI 代码解读
  • 创建成员内部类实例时,外部类的实例必须已经存在。
  ExternalClass externalClass = new ExternalClass();
  InnerClass innerClass = externalClass.new InnerClass();//创建内部类对象
AI 代码解读
package com.zheng.demo10;

public class ExternalClass {
    String name = "hello";
    private int a = 666;

    public void displayExternal() {
        System.out.println("我是外部类");
    }


    //内部类
    class InnerClass {
        private int a= 888;

        public void didplayInner() {
            System.out.println("我是内部类");
        }

        //调用外部类的私有属性
        public void show() {
            System.out.println("我拿了内部类的私有属性:"+a);
            System.out.println("我拿了外部类的私有属性:" + ExternalClass.this.a);
        }

        //调用外部类的方法
        public void show1() {
            displayExternal();
        }


    }


    public static void main(String[] args) {
        ExternalClass externalClass = new ExternalClass();
        InnerClass innerClass = externalClass.new InnerClass();//创建内部类对象
        innerClass.didplayInner();
        innerClass.show();
        innerClass.show1();
    }
}
AI 代码解读

2、静态内部类

用static定义

  • 只能访问外部类的静态资源

  • 不依赖外部类生成对象

  • 通过类.属性名调用外部属性

        InnerClass innerClass = new InnerClass();//创建内部类对象
AI 代码解读
package com.zheng.demo10;

public class ExternalClass {
    String name = "hello";
    private static int a = 666;

    public static void displayExternal() {
        System.out.println("我是外部类");
    }


    //内部类
    public static class InnerClass {
        private static int a=9999;

        public void didplayInner() {
            System.out.println("我是静态内部类");
        }

        //调用外部类的私有属性
        public void show() {
            System.out.println("拿了静态内部类的私有熟属性:"+a);
            System.out.println("我拿了外部类的静态私有属性:" +ExternalClass.a);
        }

        //调用外部类的方法
        public void show1() {
            displayExternal();
        }


    }


    public static void main(String[] args) {

        InnerClass innerClass = new InnerClass();//创建内部类对象
        innerClass.didplayInner();
        innerClass.show();
        innerClass.show1();
    }
}
AI 代码解读

在这里插入图片描述

3、局部内部类

定义在外部类的方法中的类,只在该方法内有用

  • 不能使用访问控制符(publuc 、protected、default、private)
  • 不能用static修饰
package com.zheng.demo10;

public class ExternalClass {
    String name = "hello";
    private int a = 666;

    public void display() {

        class InnerClass {//局部内部类
            double b = 520.1314;
            public void show() {
                System.out.println("访问外部属性:" + a);
                System.out.println("访问内部属性:" + b);
            }

        }
           //在方法体内使用
        InnerClass innerClass = new InnerClass();
        innerClass.show();
    }


    public static void main(String[] args) {
        ExternalClass externalClass = new ExternalClass();
        externalClass.display();
    }
}
AI 代码解读

在这里插入图片描述

4、匿名内部类

形式为:new <类或接口> <类的主体>

  • 在匿名内部编写的方法对外不可见。没有自身的对象调用。通过继承一个接口实例化的对象不能调用子类独有的方法。
  • 没有构造器
  • 不能有访问修饰符合static修饰符

实现过程:
1、继承一个接口。2、重写接口方法

package com.zheng.demo10;

public class ExternalClass {
    public static void main(String[] args) {
        A a = new A() {
            public void show() {
                System.out.println("我是匿名内部类");
            }
        };

        a.show();
    }

}

interface A {
    public void show();
}
AI 代码解读

在这里插入图片描述

目录
打赏
0
2
2
0
213
分享
相关文章
|
9月前
|
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
125 3
|
8月前
|
【Java基础】 内部类 (成员内部类、局部内部类、静态内部类、匿名内部类)
Java内部类 (成员内部类、局部内部类、静态内部类、匿名内部类)
49 0
内部类(下)匿名内部类,静态内部类的使用
内部类(下)匿名内部类,静态内部类的使用
109 0
你真的了解四种内部类吗
你真的了解四种内部类吗
81 0
【c++】内部类和匿名对象
【c++】内部类和匿名对象
内部类的概念与分类(成员内部类,局部内部类,匿名内部类)
内部类,就是一个类内部包含另一个类,即一个事物的内部包含着另一个事物。例如:身体和心脏 、汽车与发动机之间的关系。 可以看见在out下的内部类文件命名规则是 外部类$内部类.class类名称 对象名 = new 类名称();外部类名称.内部类名称 对象名 = new 外部类名称().new 外部类名称(); 把这条公式插入到demo07InnerClass 中 使用heart.调用内部类方法 如果一个类是定义在一个方法内部的,那么这是一个局部内
63 2
成员内部类、静态内部类、局部内部类、匿名内部类的精髓与应用
成员内部类、静态内部类、局部内部类、匿名内部类的精髓与应用
143 0
内部类(上)成员内部类,局部内部类的使用
内部类(上)成员内部类,局部内部类的使用
72 0
3.1 内部类的类型:成员内部类
3.1 内部类的类型:成员内部类
78 0
3.4 内部类的类型:匿名内部类
3.4 内部类的类型:匿名内部类
83 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等