Java内部类介绍

Java有四种内部类:

  1. 普通内部类

    声明在类的内部:

class Outer{
    int param1;
    String str;

    Inter inter = new Inter();
    void test(){
        System.out.println("I am test method of class Outer");
        // 可以在外部类的方法中使用内部类,使用方法
        //和正常类一样,先实例化对象后使用
        Inter inter = new Inter();
        inter.testInter();
    }

    class Inter{

        int param2;

        void testInter(){
           System.out.println("I am test method of class Inter");
        }
    }
}

class Test{
    public static void main(String [] args){
        //如果要在外部类以外的地方使用外部类的内部类,需要先在外
        //部类里创建内部类对象,然后通过外部类对象引用内部类对象
        Outer outer = new Outer();
        outer.inter.testInter();

    }
}
  • 普通内部类里面不能定义静态方法和静态成员变量
  • 普通内部类可以访问外部类的所有成员变量和方法

    1. 方法内部的内部类
class Outer{
    int param1;
    String str;

    Inter inter = new Inter();
    void test(){
        System.out.println("I am test method of class Outer");
        class Inter{//方法内的内部类只能在方法内使用
            int param2;
            void testInter(){
            System.out.println("I am test method of class Inter");
            }
        }
    }
}
3. 静态内部类
class Outer{
    int param1;
    String str;

    Inter inter = new Inter();
    void test(){
        System.out.println("I am test method of class Outer");
    //外部类访问静态内部类方法或者变量,可以直接使用  内部类.方法名或变量名
    Inter.testInter();
    }

    static class Inter{
        int param2;

        void testInter(){
                //param1 = 1;静态内部类不能访问外部类的非静态成员变量和方法,可以访问外部类的常量。因为静态类在类加载时就已经完成初始化,final修饰的常量也是同理。而非静态变量和方法是在对象创建时才分配内存,所以静态类不能访问
            System.out.println("I am test method of class Inter");
        }
    }
}

class Test{
    public static void main(String [] args){
        //如果要在外部类以外的地方使用外部类的静态内部类,
        //可以直接使用Outer.Inter.变量名或方法名
        Outer.Inter.testInter();
    }
}
4. 匿名内部类
class Listner{
    int a;
    void onClick(){
        System.out.println("click事件");
    }
}
class Outer{
    int p;
    String str;
    Listner lis = new Listner(){
        void onClick(){
            //重写父类的方法;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值