内部类、内部接口

来源:互联网 发布:如何调用数组方法 编辑:程序博客网 时间:2024/06/06 03:10
/**/非静态内部类的使用示例(展示内部类与外部类,内部类与内部类之间的访问形式)**public class Outer { //一个文件中只能有一个public的一级类,但它内部的类还是可以public的。private int size;public class Inner{ //可理解为外部类的一个成员,跟一个方法一样。 (对象级)private int counter=10;//private int size;public void doStuff(){size++;  //外部类传给内部类的形参,如果内部类中没有定义size,则访问的是外部类的size//this.size++; //内部类中的变量size,若内部类中没有定义,则语法错误//Outer.size;  //这种方式的访问是错误的Outer.this.size++;//外部类的size}}public class Inner2{      // (对象级,同是非静态兄弟内部类之间的访问方式)public void doStuff(){Inner t = new Inner();////第二个内部类中,调用第一个内部类。(就象直接方向一样,直接调用。)System.out.println(t.counter);}}public static class Inner3{ //静态类跟静态方法的用法类似 (类级,在静态内部类中访问非静态兄弟内部类)int num=5;public void doStuff(){//Inner tt = new Inner(); //错。原因跟类中的方法一样,静态成员方法无法直接访问非静态成员Outer outer = new Outer();Inner inner = outer.new Inner(); System.out.println(inner.counter);}}public static void main(String[] args) {Outer outer = new Outer();Inner inner = outer.new Inner();  //必须通过外部类对象.new 来构造内部类对象inner.doStuff();System.out.println(outer.size);//System.out.println(counter);//编译错误,外部类不能直接访问内部类的private变量System.out.println(inner.counter);//但通过内部类对象可以,就象通过类的方法访问其私有成员变量一样//System.out.println(inner.size);Inner2 inner2 = outer.new Inner2();inner2.doStuff();}}class TT{public static void main(String[] args) {Outer out = new Outer();Outer.Inner outerInner = out.new Inner();//Outer.Inner outerInner = new Outer.Inner(); //错//Outer.Inner outerInner = Outer.new Outer.Inner(); //错//Outer.Inner outerInner = Outer.new Inner(); //错outerInner.doStuff();}}--------------------------------------------------------//静态内部类的使用示例(展示如何在一个类中访问另一个类中的静态内部类)class Outer2 {private static int size;static class Inner{ //可理解为外部类的一个成员,跟一个方法一样。public void doStuff(){size++;System.out.println("size="+size);}}}class TestOuter2{public static void main(String[] args) {Outer2.Inner inner = new Outer2.Inner();inner.doStuff();}}
原创粉丝点击