静态内部类的定义
静态内部类的格式:
访问修饰符 class 外部类的类名{
访问修饰符 static class 内部类的类名{
内部类的类体;
}
}
使用静态内部类:
使用static关键字提升至类层级,访问成员变量直接使用类名.即可;以下代码可看出如果访问外部类的静态成员使用外部类.
访问内部类的静态成员使用内部类. 如静态内部类需访问外部普通成员必须先创建对象引用该类普通成员变量
(重点)可以使用在静态内部类使用show3的方法访问外部普通成员变量
package com.lagou.task10;
/**
* 实现静态内部类的定义和使用
*/
public class StaticOuter {
private static int cnt = 1;
private int snt = 2;
/**
* 定义静态内部类 有static关键字修饰隶属于类层级
*/
public static class StaticInner {
private int ia = 3;
private static int cnt = 10;
public StaticInner(){
System.out.println("静态内部类的构造方法啊!");
}
public void show(){
System.out.println("ia = " + ia);
System.out.println("cnt = " + cnt);
StaticOuter so = new StaticOuter();
System.out.println("snt = " + so.snt);
}
public void show2(int cnt){
System.out.println("形参变量是:" + cnt);
System.out.println("静态内部类变量是:" + StaticInner.cnt);
System.out.println("外部类静态变量是:" + StaticOuter.cnt);
}
public void show3(){
System.out.println(new StaticOuter().snt);
}
}
}
package com.lagou.task10;
public class StaticOuterTest {
public static void main(String[] args) {
StaticOuter.StaticInner si = new StaticOuter.StaticInner();
si.show();
si.show2(20);
}
}
静态内部类的使用方式
静态内部类不能直接访问外部类的非静态成员。
静态内部类可以直接创建对象。
如果静态内部类访问外部类中与本类(里面存在的)同名成员变量或方法时,需要使用类名.的方式访问。