Java---内部类

Harper886’s Blog / 2023-05-11 / 原文

Java---内部类

内部类的概念

内部类就是一个类内部包含另一个类

分类:

  1. 成员内部类
  2. 局部内部类(包含匿名内部类)

格式:

修饰符 class 外部类名称

{

修饰符 class 内部类名称

{

//

}

}

注意:内用外,随意访问;外用内,需要内部类对象.

image-20230511100502621

代码示例

public class Body {
    private String name;

    public class Heart {
        public void show() {
            System.out.println("名字是" + name);//内部随便访问外部.即使外部类是私有的
        }

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

    public void methodwai() {//外部类方法
        System.out.println("我是外部类方法");
    }

    public Body(String name) {
        this.name = name;
    }

    public Body() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

使用成员内部类

1.间接方法

2.直接方法

外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();

image-20230511101750815

代码示例

间接方法

内部类

public class Body {
    private String name;

    public class Heart {


        public void method() {
            System.out.println("我是内部类方法");
            System.out.println("名字是" + name);//内部随便访问外部.即使外部类是私有的
        }
    }

    public void methodwai() {//外部类方法
        System.out.println("我是外部类方法");
        new Heart().method();//再内部类方法里面调用内部类
    }

    public Body(String name) {
        this.name = name;
    }

    public Body() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Main方法

public class Main {
    public static void main(String[] args) {
        Body one =new Body();
        one.methodwai();//调用外部类方法,里面含有内部类对象
    }
}

直接使用

内部类

public class Body {
    private String name;

    public class Heart {


        public void method() {
            System.out.println("我是内部类方法");
            System.out.println("名字是" + name);//内部随便访问外部.即使外部类是私有的
        }
    }

    public void methodwai() {//外部类方法
        System.out.println("我是外部类方法");
        new Heart().method();//再内部类方法里面调用内部类
    }

    public Body(String name) {
        this.name = name;
    }

    public Body() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Main方法

public class Main1 {
    public static void main(String[] args) {
        //使用外部类创建内部类对象来使用内部类
        //第一个new body()实际上就是一个构造方法
        Body.Heart one = new Body("小黑").new Heart();
        one.method();
    }


}