java基础教程5———内部类

内部类,顾名思义,是指在类的内部在定义一个类。内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两个类,类名为outer$inner.class。内部类的成员变量和方法可以和外部类相同。
1、成员内部类
成员内部类不得含有static类型的变量和方法
外部类使用内部类的成员和方法,只能通过内部类的对象



public class Sandbox1 { public class Inner{ public void innerMethed(){ System.out.println("Inner Class 1"); OuterMethed(); } public void OuterMethed(){ System.out.println("NOT Outer Class"); } } public static void main(String args[]) { Sandbox1 outer = new Sandbox1(); Inner inner =outer.new Inner(); inner.innerMethed(); } public void OuterMethed(){ System.out.println("Outer Class"); } } //运行结果 //Inner Class 1 //NOT Outer Class //Outer Class

上面这段程序有三个注意的地方:
内部类的定义方式;
内部类可以直接引用外部类的方法和变量,包括private,如果函数名相同,优先使用内部类自己的同名函数;
可以用outer.this来表示内部对象

2、局部内部类
在函数或者其他形式的作用域中使用
局部内部类在class前面不作任何修饰,只有效域自己所处的作用域内
其他和成员局部类一致



public class Sandbox1 { public static void main(String args[]) { class Inner{ public void innerMethed(){ System.out.println("Inner Class 1"); OuterMethed(); } } Sandbox1 outer = new Sandbox1(); Inner inner =new Inner(); inner.innerMethed(); } public static void OuterMethed(){ System.out.println("Outer Class"); } } 

3、嵌套内部类
指声明为static的内部类。
普通内部类中不能含有嵌套内部类。嵌套内部类可以包含static的成员
嵌套内部类不能声明为private。
嵌套类只能使用外部类的static的成员和方法

public class Sandbox1
{

    public static class Inner{
        public void innerMethed(){
            System.out.println("Inner Class 1");
            OuterMethed();
        }


    }   
    public static void main(String args[])
    {

        Sandbox1 outer = new Sandbox1();
        Inner inner  =new Sandbox1.Inner(); 
        inner.innerMethed();        
    }
    public static void OuterMethed(){
        System.out.println("Outer Class");
    }
}

4、匿名内部类

你可能感兴趣的:(java)