java中内部类简析

一、内部类的定义

        在一个类中定义的另一个完整的类

二、内部类的分类

        成员内部类、局部内部类、静态内部类、匿名内部类

三、内部类的使用

1.成员内部类

        直接定义在一个类中

使用格式:

        1.创建外部类对象

        2.通过外部类对象的new方法创建除内部类对象

        3.通过内部类对象调用其方法或者属性

//外部类
public class Outer{

    //成员内部类,直接定义在一个外部类中
    public class Within{

        public void printW(){
            System.out.println("这是一个内部类")
        }
    }

}
//测试
public class Test{
    public static void main(String[] args){
        //1.创建外部类对象
        Outer outer=new Outer();
        //2.通过外部类对象,创建内部类对象,直接创建内部类对象会报错
        Outer.Within within=outer.new Within();
        //3.通过创建出来的内部类对象,可以调用内部类中的属性和方法
        within.printW;    
    }    
}

2.局部内部类

        定义在方法之中

使用格式:

        1.在方法中创建一个类(构造方法中也可以)

        2.局部内部类只能在该方法中使用,方法结束自动销毁释放内存

        3.在方法中可以直接new出对象

//外部类
public class Outer{
    //方法
    public void demo(){

        /*局部内部类,定义在方法中。成员内部类不用访问修饰符,因为和局部属性一样,作用域
只有在方法中,方法结束自动销毁*/
        class Within{
            private String name;

            public void setName(String name){
                this.name=name;
            }
            public String getName(){
                return this.name;
            }
        }

    Within within=new Within();//成员内部类实例化,只能在方法中,方法结束自动销毁释放内存
    }
}

3.静态内部类

        定义在类之中,和成员内部类的区别在于成员内部类需要先创建出外部类对象,静态内部类可以直接通过类名创建出静态内部类对象

//外部类
public class Outer{
    //静态内部类
    public static class Within{
        public void printW(){
            System.out.println("这是静态内部类中普通方法");
        }
         public void printO(){
            System.out.println("这是静态内部类中静态方法");
        }
    }
}

public class Demo1{
    public static void main(String[] args){
        /*直接通过类名创建出静态内部类,不用像成员内部类一样先创建出外部类对象,然后再通过外部类对象创建出内部类*/
        Outer.Within within=new Outer.Within():
        within.printW();//调用静态内部类中方法
        Outer.Within.printO;//直接通过类名调用静态内部类中的静态方法
    }
}

上一篇:MySQL中内连接、左连接、右连接、全连接、交叉连接


下一篇:Java内部类