【Java】内部类及其调用方法

来源:互联网 发布:阿里云cdn和加带宽 编辑:程序博客网 时间:2024/05/16 17:11

一、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方法

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方法

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

四、综合练习

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的孙洋洋

五、汇总

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