19.静态内部类【静态嵌套类】【20220701】
时间:2023-01-17 23:30:00
静态内部类静态嵌套类
静态内部类是添加成员内部类别static修饰符
package com.wangxing.test1; public class Hello { public static class World{ } }
构造方法可以出现在静态内部类,如实例元素、静态元素
package com.wangxing.test1; public class Hello { public static class World{ public String worldshili="静态内部类中的实例变量"; public static String worldstatic="静态内部静态变量"; public World(){} public void worldshiliMethod(){} public static void worldstaticMethod(){} } }
静态内部类中访问静态内部类的元素
1.在静态内部类的构造方法和实例方法中可以访问静态内部类中构造方法,实例元素,静态元素
构造方法--new
实例元素-对象/对象/对象/实例元素-实例元素-对象/对象/对象/对象/对象/对象/实例元素-实例元素-实例元素-实例元素-实例元素-对象/对象/对象/对象/对象/对象/对象/实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-对象/对象/对象/对象/对象/对象/对象/对象/实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-实例元素-对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/实例元this,可以省略
静态元素-对象/对象/静态元素-对象/对象/对象/对象/对象/对象/对象/静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-对象/对象/对象/对象/对象/对象/对象/对象/对象/静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-静态元素-对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对象/对this/类名,可以省略
2.静态内部结构方法、实例元素、静态元素可在静态内部静态方法中访问
构造方法--new
实例元素-对象
静态元素-对象/类名可以省略
不能使用this
package com.wangxing.test1; public class Hello1 { public static class World1{ public String worldshili="静态内部类中的实例变量"; public static String worldstatic="静态内部静态变量"; public World1(){} public World1(String name){ World1 w11=new World1(); System.out.println(w11.worldshili); System.out.println(this.worldshili); System.out.println(worldshili); w11.worldshiliMethod1(); this.worldshiliMethod1(); worldshiliMethod1(); System.out.println(w11.worldstatic); System.out.println(this.worldstatic); System.out.println(World1.worldstatic); System.out.println(worldstatic); w11.worldstaticMethod1(); this.worldstaticMethod1(); World1.worldstaticMethod1(); worldstaticMethod1(); } public void worldshiliMethod1(){} public void worldshiliMethod2(){ World1 w11=new World1(); System.out.println(w11.worldshili); System.out.println(this.worldshili); System.out.println(worldshili); w11.worldshiliMethod1(); this.worldshiliMethod1(); worldshiliMethod1(); System.out.println(w11.worldstatic); System.out.println(this.worldstatic); System.out.println(World1.worldstatic); System.out.println(worldstatic); w11.worldstaticMethod1(); this.worldstaticMethod1(); World1.worldstaticMethod1(); worldstaticMethod1(); } public static void worldstaticMethod1(){} public static void worldstaticMethod2(){ World1 w11=new World1(); System.out.println(w11.worldshili); //System.out.println(this.worldshili); //System.out.println(worldshili); w11.worldshiliMethod1(); //this.worldshiliMethod1(); //worldshiliMethod1(); System.out.println(w11.worldstatic); //System.out.println(this.worldstatic); System.out.println(World1.worldstatic); System.out.println(worldstatic); w11.worldstaticMethod1(); //this.worldstaticMethod1(); World1.worldstaticMethod1(); worldstaticMethod1(); } } }
在静态内部类中访问外部元素
构造方法---new
实例元素-只能对象,不能省略
静态元素-对象/类名可以省略
package com.wangxing.test1; public class Hello2 { public String helloshili="外部类中的实例变量"; public static String hellostatic="外部类中的静态变量"; public Hello2(){} public void helloshiliMethod1(){} public static void hellostaticMethod1(){} public static class World2{ public World2(){ Hello2 h2=new Hello2(); System.out.println(h2.helloshili); //System.out.println(Hello2.this.helloshili); //System.out.println(helloshili); h2.helloshiliMethod1(); //Hello2.this.helloshiliMethod1(); //helloshiliMethod1(); System.out.println(h2.hellostatic); //System.out.println(Hello2.this.hellostatic); System.out.println(Hello2.hellostatic); System.out.println(hellostatic); h2.hellostaticMethod1(); //Hello2.this.hellostaticMethod1(); Hello2.hellostaticMethod1(); hellostaticMethod1(); } public void worldshiliMethod1(){ Hello2 h2=new Hello2(); System.out.println(h2.helloshili); //System.out.println(Hello2.this.helloshili); //System.out.println(helloshili); h2.helloshiliMethod1(); //Hello2.this.helloshiliMethod1(); //helloshiliMethod1(); System.out.println(h2.hellostatic); //System.out.println(Hello2.this.hellostatic); System.out.println(Hello2.hellostatic); System.out.println(hellostatic); h2.hellostaticMethod1(); //Hello2.this.hellostaticMethod1(); Hello2.hellostaticMethod1(); hellostaticMethod1(); } public static void worldstaticMethod1(){ Hello2 h2=new Hello2(); System.out.println(h2.helloshili); //System.out.println(Hello2.this.helloshili); //System.out.println(helloshili); h2.helloshiliMethod1(); //Hello2.this.helloshiliMethod1(); //helloshiliMethod1(); System.out.println(h2.hellostatic); //System.out.println(Hello2.this.hellostatic); System.out.println(Hello2.hellosatic);
System.out.println(hellostatic);
h2.hellostaticMethod1();
//Hello2.this.hellostaticMethod1();
Hello2.hellostaticMethod1();
hellostaticMethod1();
}
}
}
外部类中访问静态内部类中的元素
构造方法--new
实例元素--对象,不可以省略
静态元素--对象/类名,不可以省略
package com.wangxing.test1;
public class Hello3 {
public Hello3(){
World3 w33=new World3();
System.out.println(w33.worldshili);
w33.worldshiliMethod1();
System.out.println(w33.worldstatic);
System.out.println(World3.worldstatic);
w33.worldstaticMethod1();
World3.worldstaticMethod1();
}
public void helloshiliMethod1(){
World3 w33=new World3();
System.out.println(w33.worldshili);
w33.worldshiliMethod1();
System.out.println(w33.worldstatic);
System.out.println(World3.worldstatic);
w33.worldstaticMethod1();
World3.worldstaticMethod1();
}
public static void hellostaticMethod1(){
World3 w33=new World3();
System.out.println(w33.worldshili);
w33.worldshiliMethod1();
System.out.println(w33.worldstatic);
System.out.println(World3.worldstatic);
w33.worldstaticMethod1();
World3.worldstaticMethod1();
}
public static class World3{
public String worldshili="静态内部类中的实例变量";
public static String worldstatic="静态内部类中的静态变量";
public World3(){}
public void worldshiliMethod1(){}
public static void worldstaticMethod1(){}
}
}
其他类访问静态内部类中的元素
1.没有导入静态内部类程序包的时候
构造方法--外部类类名.静态内部类类名 对象=new 外部类类名.静态内部类类名();
实例元素--只能对象
静态元素--对象/外部类类名.静态内部类类名
2.有导入静态内部类程序包的时候
//import com.wangxing.test1.Hello.World;
构造方法--静态内部类类名 对象=new 外部类类名.静态内部类类名();
实例元素--只能对象
静态元素--对象/外部类类名.静态内部类类名
package com.wangxing.test1;
public class Hello {
public static class World{
public String worldshili="静态内部类中的实例变量";
public static String worldstatic="静态内部类中的静态变量";
public World(){}
public void worldshiliMethod(){}
public static void worldstaticMethod(){}
}
}
package com.wangxing.test1;
import com.wangxing.test1.Hello.World;
public class Other {
public Other(){
Hello.World w=new Hello.World();
System.out.println(w.worldshili);
w.worldshiliMethod();
System.out.println(w.worldstatic);
System.out.println(Hello.World.worldstatic);
w.worldstaticMethod();
Hello.World.worldstaticMethod();
}
public void otherShili(){
//import com.wangxing.test1.Hello.World;
Hello.World w=new Hello.World();
//World w=new Hello.World();
System.out.println(w.worldshili);
w.worldshiliMethod();
System.out.println(w.worldstatic);
System.out.println(Hello.World.worldstatic);
w.worldstaticMethod();
Hello.World.worldstaticMethod();
}
public static void otherStatic(){
//import com.wangxing.test1.Hello.World;
//Hello.World w=new Hello.World();
World w=new Hello.World();
System.out.println(w.worldshili);
w.worldshiliMethod();
System.out.println(w.worldstatic);
System.out.println(Hello.World.worldstatic);
w.worldstaticMethod();
Hello.World.worldstaticMethod();
}
}