一、static内部类的static方法
public class Test0719_Inner_Test { public static void main(String[] args) { //static内部类的static方法。。。 Outter.InnerStatic.InnerNameee(); System.out.println(Outter.InnerStatic.jjj); System.out.println(); } } class Outter { String i = "非static"; static String j = "static"; static class InnerStatic{ static String jjj = "内部类的static"; public static void InnerNameee() { System.out.println("static内部类的static方法。。。"); //static内部类访问外部类的static成员 System.out.println(j); //static内部类访问外部类的非static成员 System.out.println(new Outter().i); } } }
运行结果:
static内部类的static方法。。。
static
非static
内部类的static
static
非static
内部类的static
二、static内部类的非static方法
public class Test0719_Inner_Test { public static void main(String[] args) { //static内部类的非static方法 Outter.InnerStatic inner = new Outter.InnerStatic(); inner.InnerName(); System.out.println(inner.iii); System.out.println(); } } class Outter { String i = "非static"; static String j = "static"; static class InnerStatic{ String iii = "内部类的非static"; public void InnerName() { System.out.println("static内部类的非static方法"); //static内部类访问外部类的static成员 System.out.println(j); //static内部类访问外部类的非static成员 System.out.println(new Outter().i); } } }
运行结果:
static内部类的非static方法
static
非static
内部类的非static
static
非static
内部类的非static
三、非static内部类的非static方法
public class Test0719_Inner_Test { public static void main(String[] args) { //非static内部类的非static方法………… Outter.InnerNoStatic innerNoStatic = new Outter().new InnerNoStatic(); innerNoStatic.InnerNoName(); System.out.println(innerNoStatic.iiiNoStatic); } } class Outter { String i = "非static"; static String j = "static"; class InnerNoStatic{ int iiiNoStatic = 99776; public void InnerNoName() { System.out.println("非static内部类的非static方法…………"); //非static内部类访问外部类的static成员 System.out.println(Outter.j); //非static内部类访问外部类的非static成员 System.out.println(i); } } }
运行结果:
非static内部类的非static方法…………
static
非static
99776
static
非static
99776
四、综合练习
package com.acc; public class Test0719_Inner2 { String str = "孙洋洋"; class Text2 { int i = 1; void m2() { System.out.println(new Test0719_Inner2().str); } class Text3 { int k = 3; public void m1() { System.out.println("m1的"+ new Test0719_Inner2().str); } } } public static void main(String[] args) { Test0719_Inner2.Text2 text2 = new Test0719_Inner2().new Text2(); text2.m2(); System.out.println(); Test0719_Inner2.Text2.Text3 text3 = new Test0719_Inner2().new Text2().new Text3(); text3.m1(); } }
运行结果:
孙洋洋
m1的孙洋洋
m1的孙洋洋
五、汇总
package com.test; public class Test0719_Inner_Test { public static void main(String[] args) { //static内部类的static方法。。。 Outter.InnerStatic.InnerNameee(); System.out.println(Outter.InnerStatic.jjj); System.out.println(); //static内部类的非static方法 Outter.InnerStatic inner = new Outter.InnerStatic(); inner.InnerName(); System.out.println(inner.iii); System.out.println(); //非static内部类的非static方法………… Outter.InnerNoStatic innerNoStatic = new Outter().new InnerNoStatic(); innerNoStatic.InnerNoName(); System.out.println(innerNoStatic.iiiNoStatic); } } class Outter { String i = "非static"; static String j = "static"; static class InnerStatic{ String iii = "内部类的非static"; static String jjj = "内部类的static"; public void InnerName() { System.out.println("static内部类的非static方法"); //static内部类访问外部类的static成员 System.out.println(j); //static内部类访问外部类的非static成员 System.out.println(new Outter().i); } public static void InnerNameee() { System.out.println("static内部类的static方法。。。"); //static内部类访问外部类的static成员 System.out.println(j); //static内部类访问外部类的非static成员 System.out.println(new Outter().i); } } class InnerNoStatic{ int iiiNoStatic = 99776; public void InnerNoName() { System.out.println("非static内部类的非static方法…………"); //非static内部类访问外部类的static成员 System.out.println(Outter.j); //非static内部类访问外部类的非static成员 System.out.println(i); } } }
运行结果:
static内部类的static方法。。。
static
非static
内部类的static
static内部类的非static方法
static
非static
内部类的非static
非static内部类的非static方法…………
static
非static
99776
static
非static
内部类的static
static内部类的非static方法
static
非static
内部类的非static
非static内部类的非static方法…………
static
非static
99776