- 作者:xiaoxiao
- 发表时间:2020-12-23 11:00
- 来源:未知
//StaticCls.java
public class StaticCls{ public static void main(String[] args){// OuterCls ci = new StaticCls().new OuterCls();//method 3 replace 2.1// OuterCls.InnerCls oi=new OuterCls.InnerCls();//method 1 OuterCls ci = new OuterCls();//method 2.1 OuterCls.InnerCls oi = ci.new InnerCls();//method 2.2 }}//if we use method 3 ,we must put OuterCls into the StaticCls
class OuterCls{ OuterCls(){ System.out.println("OuterCls"); }// public static class InnerCls{//1 public or default? Please have a try public class InnerCls{ InnerCls(){ System.out.println("InnerCls"); } }}
//xTest.java
class Outer{ static int outer_stat = 0; int outer_non_stat = 1; static class StaticInner{ static int stat = 2;
//静态内部类的静态成员可以访问外部类的静态变量 static int stat_test = outer_stat; public void tester(){
//静态内部类的非静态成员可以访问外部类的静态变量 System.out.println("outer_stat = " + outer_stat); } } class NonStaticInner{ public void tester(){
//非静态内部类的非静态成员可以访问外部类的静态变量 System.out.println("outer_stat = " + outer_stat);
//非静态内部类的非静态成员可以访问外部类的非静态变量 System.out.println("outer_non_stat = " + outer_non_stat);
//非静态内部类的非静态成员可以访问相同外部类下的静态内部类的静态变量 System.out.println("StaticInner.stat = " + StaticInner.stat); } }}//静态内部类可以有静态成员,而非静态内部类则不能有静态成员
public class xTest{ public static void main(String[] args){ new Outer().new NonStaticInner().tester(); System.out.println("------------"); new Outer.StaticInner().tester(); }}
JAVA技术专题综述之内部类篇 | |
来源:IT网络学院 2003年5月8日11:6 | |
有些类的定义中包含另一个类的定义。这种处于内部的类称为内部类(inner class)。 例如: public class OuterClass { public class InnerClass { //---This is a inner class. } } InnerClass类嵌套在OuterClass中,并且被声明为public,因此被OuterClass类之外的对象访问。 |