package com.pzistart.msgdemoimpl.enumtest;
import lombok.Data;
/**
* @author Pzi
* @create 2022-10-19 10:29
*/
public class A {
public static void main(String[] args) {
B b = new B();
b.getB();
B.getC();
System.out.println(b.name);
System.out.println(B.name1);
}
private static String d;
/**
* 静态内部类,可以访问外部类的静态成员
*/
@Data
public static class B {
private String name;
private static String name1;
private void getB() {
}
private static void getC() {
}
}
/**
* 实例内部类,就如同外部类的一个成员变量一样,生命周期和其一致
*/
class C {
private String c;
/*
//静态变量,随着类的加载而加载。而成员内部类是属于类的实例化对象的,所以不能将静态变量成员在这里
private static String d;
public static void getD(){
}*/
private static final String e = "e";
}
/**
* 局部内部类,定义在方法中的
*/
public void outerClassMethod() {
class D {
public void methodD() {
System.out.println("D");
}
}
}
}
静态内部类
1. 可以访问外部类的静态成员。
2. Java中静态内部类可以被实例化,该对象可以调用静态内部类中的非静态成员。b.name b.getB()。
3. 静态内部类名能直接调用类中的静态私有成员变量。B.name1,B.getC()。
实例内部类
如同外部类的一个成员变量一样,生命周期和其一致。不能访问外部类的静态成员。
局部内部类
它是被定义在方法中的,局部内部类中不能定义静态成员。
匿名内部类
- 匿名内部类被定义出来后,就是某个抽象类/接口的子类对象。
- 没有名字的局部内部类就叫做匿名内部类。
- 匿名内部类被定义出来后,就是某个抽象类/接口的子类对象。
调用方式
1. 在其他类中,只能创建类A的静态内部类;不能创建类A的实例内部类。