public class Test3{
public String name1="1";
public static String name2="2";
static class Test5{ //静态成员内部类定义
public String name3="3";
public static String name4="4";
public void eat() { //可以定义静态和非静态成员
// System.out.println(name1); 报错,不能不能对非静态字段 name1 进行静态引用
System.out.println(name2); //可以可以直接访问外部类的静态成员
}
public static void sleep() { //可以定义静态和非静态成员
System.out.println("sleeping");
}
}
public static void main(String[] args) {
Test3.Test5 t1=new Test3.Test5(); //访问静态成员内部类方法
Test5 t2=new Test3.Test5();
t1.eat();
t1.sleep();
t2.eat();
t2.sleep();
Test3.Test5.sleep(); //外部类可以直接通过完整类名直接访问静态内部类的静态成员【方
法】
Test5.sleep();
System.out.println(t1.name3);
System.out.println(t2.name4);
System.out.println(Test3.Test5.name4);//外部类可以直接通过完整类名直接访问静态内部
//类的静态成员【变量】
}
}
五、相关问题
关于JAVA的内部类以及内、外部类变量重复问题
//普通情况:R.this.agr
public class R {
int agr=12;
public class Intse{
int agr=22;
public void ins(){
System.out.println("外部类age:"+ R.this.agr);
System.out.println("内部类age:"+agr);
}
}
public static void main(String[] args){
System.out.println("关于相同变量在内外部类的使用:");
System.out.println("外部类需:Hent.this.agr");
Intse ist=new R().new Intse();
ist.ins();
}
}
//静态成员式内部类:Test3.agr
public class Test3{
private static int agr=19;
public static class Intse{
int agr=99;
public void ins(){
System.out.println("外部类age:"+ Test3.agr);
System.out.println("内部类age:"+agr);
}
}
public static void main(String[] args) {
System.out.println("关于相同变量在内外部类的使用:");
Intse ist = new Intse();
ist.ins();
}
}