栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java内部类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java内部类

目录​​​​​​​

实例内部类

静态内部类

局部内部类

匿名内部类


在Java中,当一个事物的内部需要一个结构,而这个结构又只为这个事物服务的时候,我们就可以使用内部类(例如链表中的节点)。在Java中,可以将一个类定义在一个类或者方法的内部,这种用法我们称之为内部类。

内部类有三种类型:

实例内部类

静态内部类

局部内部类

匿名内部类

其中实例内部类和静态内部类又统称为成员内部类

实例内部类
  1. 实例内部类可以直接访问外部类的任意修饰符修饰的成员
  2. 如果外部类和内部类具有相同成员,则优先访问内部类的成员
  3. 若想访问外部类同名成员可使用 外部类名.this.成员名 的方式
  4. 内部类不能使用static成员,如果使用需要加上final修饰
class OuterClass{
    public int num1 = 1;
    private int num2 = 2;
    public static int num3 = 3;
    class InnerClass{
        public int num4 = 4;
        public int num1 = 10;
        //public static int num = 5;//error
        public static final int num = 5;
        public void show(){
            System.out.println(num1);//内部类的num1
            System.out.println(OuterClass.this.num1);//外部类的num1
            System.out.println(num2);
            System.out.println(num3);
            System.out.println(num4);
            System.out.println(num);
        }

    }
}


public class Main {
    public static void main(String[] args) {

        //实例内部类创建对象
        OuterClass out = new OuterClass();
        OuterClass.InnerClass in = out.new InnerClass();
        //OutClass.InnerClass innerClass1 = new OutClass().new InnerClass();也可以
        in.show();
    }
}

运行结果:

静态内部类
  1. 静态内部类不能访问外部类的非静态成员
  2. 在创建静态内部类对象时不需要先创建外部类对象

class OuterClass{
    public int num1 = 1;
    private int num2 = 2;
    public static int num3 = 3;
    static class InnerClass{
        public int num4 = 4;
        public int num1 = 10;
        //public static int num = 5;//error
        public static final int num5 = 5;//静态内部类可创建静态成员
        public static int num6 = 6;
        public void show(){
            System.out.println(num1);//内部类的num1
            //System.out.println(num2);//访问外部类的num2报错,因为不是静态成员
            System.out.println(num3);
            System.out.println(num5);
            System.out.println(num6);
        }

    }
}


public class Main {
    public static void main(String[] args) {

        //静态内部类创建对象
        OuterClass.InnerClass in = new OuterClass.InnerClass();//不需要提前创建外部类对象
        in.show();
    }
}
运行结果:

局部内部类

局部内部类定义在方法内部,实际开发中使用较少,了解即可

注意:局部内部类对static的使用和实例内部类相同

public class Main {
    public static void main(String[] args) {
        int num1 = 1;
        class InnerClass{
            private int num2 = 2;
            //public static int num3 = 3;
            public static final int num4 = 4;

            public void show(){
                System.out.println(num1);
                System.out.println(num2);
                //System.out.println(num3);//不能定义static成员
                System.out.println(num4);
            }
        }
        //静态内部类创建对象
        InnerClass in = new InnerClass();
        in.show();
    }
}
运行结果:

匿名内部类

在接口中使用,学习完进行补充

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884272.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号